我一直在关注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”情况并且不会传递该情况并回显“问题上传图像”。 我完全按照教程所做的那样,教程中的人能够传递“if”的情况并实际触及最后一部分,并回应“图像上传。”
任何人都知道问题可能是什么?
答案 0 :(得分:1)
如果您的查询失败,如果它导致问题上传图片错误而不是可能进入if
条件,则应使用mysql_error()
来读取友好的消息,是什么让你的查询失败。
echo "Problem uploading image.".mysql_error($connection);
//Replace connection with the connection var
注意:代码完全是脏的,也使用了已弃用的
mysql_()
。所以 开始学习mysqli_()
或PDO,您的代码也容易进行SQL注入,在数据库中插入任何用户提供的数据之前,更好地清理数据并转义字符串
此外,您没有检查文件扩展名和用户上传的文件大小,因此出于安全原因您必须这样做并保存上传到服务器上的大文件...