【发布时间】:2017-10-13 16:25:23
【问题描述】:
我正在尝试将文件上传到数据库(使用 php 和 mysql)。我可以成功上传文件并将其路径保存在一个表中,但是当我尝试将文件上传到另一个表时,我收到一条错误消息:move_uploaded_file: failed to open stream。但是,如果我创建另一个数据库,我可以再次成功上传文件。我可以只将文件上传到一个表而不是同一数据库中的多个表吗?由于我的项目设计,我想将文件上传到同一个数据库中的2个表,有人可以告诉我怎么做吗? 这是可以成功上传文件的代码,表名是photos:
<?php
include('config.php');
$file=$_FILES['image']['tmp_name'];
$image= addslashes(file_get_contents($_FILES['image']['tmp_name']));
$image_name= addslashes($_FILES['image']['name']);
move_uploaded_file($_FILES["image"]["tmp_name"],"photos/" $_FILES["image"]["name"]);
$location="photos/" . $_FILES["image"]["name"];
$description=$_POST['description'];
$save=mysql_query("INSERT INTO photos (location, description) VALUES ('$location','$description')");
}
?>
我尝试通过以下代码将文件上传到另一个表。我只是将照片更改为photos2,photos2是另一个表的名称
<?php
include('config.php');
$file=$_FILES['image']['tmp_name'];
$image= addslashes(file_get_contents($_FILES['image']['tmp_name']));
$image_name= addslashes($_FILES['image']['name']);
move_uploaded_file($_FILES["image"]["tmp_name"],"photos2/" $_FILES["image"]["name"]);
$location="photos2/" . $_FILES["image"]["name"];
$description=$_POST['description'];
$save=mysql_query("INSERT INTO photos2 (location, description) VALUES ('$location','$description')");
}
?>
我收到以下错误: 警告:move_uploaded_file:无法打开流:没有这样的文件或目录 move_uploaded_file(): 无法将 'C:\XAMPP\tmp\php1793.tmp' 移动到 'photos2/1.png'
另外,我知道 mysql 已被弃用,我需要将其更改为 mysqli,我将在未来这样做,现在我只想知道如何将文件上传到同一个数据库中的 2 个表。
更新:我认为我提出问题的方式引起了我不必要的困惑。这就是我所说的“上传到2个表”的意思:我的网站上有两个页面,我们称它们为页面A和页面B,用户可以在页面A和页面B上传照片,从页面A上传的照片只能看到在页面 A 上,同样地,从页面 B 上传的照片只能在页面 B 上看到。因此,创建 2 个单独的表来存储照片是有意义的。如果它们存储在同一个表中,那么在每个页面上,当 I ("SELECT*FROM photos") 时,查询将搜索从另一个页面上传的所有照片,这是不必要的。我不需要同时将同一张照片上传到两个不同的桌子。
【问题讨论】:
-
您正在尝试的当然是可能的,尽管您收到的错误消息是由于缺少一个名为 photos2 的 文件夹。您是否尝试上传到同一个文件夹,然后简单地更改表格?如果是这样,请将
move_uploaded_file和$location中的photos2更改为简单的photos。否则,创建photos2文件夹:) -
没有。这是因为他试图从 FROM 移动的文件不存在了,因为他已经移动了它。
-
"现在我只想知道如何将文件上传到同一个数据库中的两个表" - 什么;同时还是在不同的操作中?您的问题不清楚。
-
您的代码易受 SQL 注入攻击,您需要修复此问题。
-
我更新了我的问题来回答一些 cmets。
标签: php mysql database mysqli file-upload