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

我用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="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;,无助于防止注入;反正不是靠它自己。