PHP将图像上传到文件夹并将记录插入数据库
我用PHP编写了上传图像的代码,但我有一个问题,当我上传图像时,数据库中并没有记录,但图像被上传到我想要的路径 这是我的代码:PHP将图像上传到文件夹并将记录插入数据库,php,mysql,Php,Mysql,我用PHP编写了上传图像的代码,但我有一个问题,当我上传图像时,数据库中并没有记录,但图像被上传到我想要的路径 这是我的代码: <form action="upload.php" method="post" enctype="multipart/form-data" id="upload_form"> <input id="file" type="file" name="file[]" /> <input type="submit" id="uplo
<form action="upload.php" method="post" enctype="multipart/form-data" id="upload_form">
<input id="file" type="file" name="file[]" />
<input type="submit" id="upload" name="submit" value="Dodaj" />
</form>
include 'init.php';
$uploaded = [];
$allowed = ['jpg', 'png'];
$succeeded = [];
$failed = [];
if(!empty($_FILES['file'])){
foreach($_FILES['file']['name'] as $key => $name){
if($_FILES['file']['error'][$key] == 0){
$temp = $_FILES['file']['tmp_name'][$key];
$ext = explode('.', $name);
$ext = strtolower(end($ext));
$file = md5_file($temp) . time() . '.' . $ext;
if(in_array($ext, $allowed) === true && move_uploaded_file($temp, "uploads/{$file}") === true){
$succeeded[] = array('name' => $name, 'file' => $file);
$path = 'uploads';
$sql = "INSERT INTO users (img_path, img_name, img_type) VALUES ('$path', '$file', '$ext') WHERE id = '$session_user_id'";
$result = mysql_query($sql);
}else{
$failed[] = array('name' => $name);
}
}
}
这可能返回代码忽略的错误:
INSERT INTO users (img_path, img_name, img_type) VALUES ('$path', '$file', '$ext') WHERE id = '$session_user_id'
INSERT
语句没有WHERE
子句。只需完全省略该条款:
INSERT INTO users (img_path, img_name, img_type) VALUES ('$path', '$file', '$ext')
此外,您应该在执行SQL语句后检查SQL错误
编辑:或。。。是否需要改为
UPDATE
语句?我觉得奇怪的是,一个名为users
的表会保存图像记录。是否要更新现有用户记录以包含新值?这将有一个WHERE
子句。大概是这样的:
UPDATE users SET img_page='$path', img_name='$file', img_type='$ext' WHERE id = '$session_user_id'
这可能返回代码忽略的错误:
INSERT INTO users (img_path, img_name, img_type) VALUES ('$path', '$file', '$ext') WHERE id = '$session_user_id'
INSERT
语句没有WHERE
子句。只需完全省略该条款:
INSERT INTO users (img_path, img_name, img_type) VALUES ('$path', '$file', '$ext')
此外,您应该在执行SQL语句后检查SQL错误
编辑:或。。。是否需要改为
UPDATE
语句?我觉得奇怪的是,一个名为users
的表会保存图像记录。是否要更新现有用户记录以包含新值?这将有一个WHERE
子句。大概是这样的:
UPDATE users SET img_page='$path', img_name='$file', img_type='$ext' WHERE id = '$session_user_id'
您的查询错误,INSERT语句中不能有
where
应该是这样,
INSERT INTO users (img_path, img_name, img_type) VALUES ('$path', '$file', '$ext')
还有一个提示:使用
mysqli
如果您的查询是错误的,您不能在INSERT语句中使用where
应该是这样,
INSERT INTO users (img_path, img_name, img_type) VALUES ('$path', '$file', '$ext')
还有一个技巧:使用
mysqli
你只是假设你的查询成功了。您根本没有错误检查$result=mysql\u query(…)或die(mysql\u error())
应该是您拥有的最低处理量。永远不要假设db操作成功。总是假设它会失败,把成功当作一个惊喜。。好极了@MarcB。说得好关于其中
。请阅读这篇文章以及准备好的声明。如果你想做一个更新,那完全是另一种动物。如果你能,你应该。它们不再得到维护,而是在使用。相反地学习,并考虑使用PDO,你只是假设你的查询成功了。您根本没有错误检查$result=mysql\u query(…)或die(mysql\u error())
应该是您拥有的最低处理量。永远不要假设db操作成功。总是假设它会失败,把成功当作一个惊喜。。好极了@MarcB。说得好关于其中
。请阅读这篇文章以及准备好的声明。如果你想做一个更新,那完全是另一种动物。如果你能,你应该。它们不再得到维护,而是在使用。相反地学习,并考虑使用PDO,你将如何知道它将记录哪个用户?@ CROVG:如果在该表中有一个列来记录该数据,那么也要在该列中插入一个值。是的,但是如果我有更多的Cube,那么会有不同的用户吗?相同吗?@CroVG:插入记录时有数据的任何列都可以包含在INSERT
语句中。现在还不清楚你在问什么。(也不清楚为什么要将图像数据存储在一个名为users
的表中。也许这应该是一个UPDATE
语句,而不是一个INSERT
?它会有一个WHERE
子句…^yep,还有……正如我概述的那样,你如何知道它将记录哪个用户?@CroVG:如果该表中有一列记录该数据,那么也在该列中插入一个值。是的,但如果我有更多的列记录不同的用户?相同吗?@CroVG:插入记录时有数据的任何列都可以包含在INSERT
语句中。现在还不清楚你在问什么。(也不清楚为什么要将图像数据存储在一个名为users
的表中。也许这应该是一个UPDATE
语句,而不是INSERT
?它会有一个WHERE
子句……^是的,而且……正如我所概述的那样,@David实际上就是这么回答的。)。有什么不同吗?@DanishEnam只是碰巧我在打字时没有看到留言。有一件事是使用mysqli
而不是mysql
:P“还有一个提示:使用mysqli。”-你遗漏了一些东西。。。使用“just”mysqli_389;,无助于防止注入;不管怎么说,不是靠它自己。这实际上是@David回答的。有什么不同吗?@DanishEnam只是碰巧我在打字时没有看到留言。有一件事是使用mysqli
而不是mysql
:P“还有一个提示:使用mysqli。”-你遗漏了一些东西。。。使用“just”mysqli_389;,无助于防止注入;反正不是靠它自己。