2

我一直在关注 YouTube 上关于“在 MySQL 数据库中上传/存储图像”的本教程,但有两天出现这个问题,最近两天我一直在尝试调试这个问题,但无法弄清楚这是什么。

这是代码:

<?php
// connect to database
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("databaseimage") or die(mysql_error());

// file properties
$file = $_FILES['image']['tmp_name'];

if (!isset($file))
    echo "Please select an image.";
else
{
 $image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
 $image_name = addslashes($_FILES['image']['name']);
 $image_size = getimagesize($_FILES['image']['tmp_name']);

 if ($image_size==FALSE)
    echo "That's not an image.";
else
{
    if (!$insert = mysql_query("INSERT INTO store VALUES ('', '$image_name',     
    '$image')"))
        echo "Problem uploading image.";
    else
    {
     $lastid = mysql_insert_id();
     echo "Image uploaded.<p />Your image:<p /><img src=get.php?id=$lastid>";
    }

} 
}
?>

每当我尝试上传 .png 或 .jpeg 文件时,代码都会遇到“else”案例中的“if”案例,并且不会传递该案例并回显“上传图像问题”。我完全按照教程所做的那样,教程中的人能够通过那个“如果”案例并实际点击最后一部分并回显“上传图像”。

任何人都知道问题可能是什么?

4

1 回答 1

1

如果它向您抛出一个上传图像问题的错误,而不是因为您的查询失败而可能进入if条件,您应该使用mysql_error()阅读友好消息,这使您的查询失败。

echo "Problem uploading image.".mysql_error($connection); 
//Replace connection with the connection var

注意:代码完全是脏的,它也使用 deprecated mysql_()。所以开始学习mysqli_()或 PDO,你的代码也容易发生 SQL 注入,在将任何用户提供的数据插入数据库之前,更好地清理数据并转义字符串

此外,您没有检查用户上传的文件扩展名和文件大小,因此出于安全原因,您也必须这样做并保存上传到服务器上的大文件...

于 2013-07-20T07:02:11.883 回答