我有这个上传脚本但是当我想运行它时,页面返回空白。有一些问题,但我无法弄清楚错误在哪里以及如何解决。如果有人帮我制作这个剧本,我将不胜感激! 非常感谢!
<?php
$allowedExts = array("jpg", "jpeg", "gif", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
include 'db.php';
mysql_query("INSERT INTO `members`(img) VALUES ('$_FILES["file"]["name"]')");
include 'succes.php';
}
}
}
else
{
echo "Invalid file";
}
?>
答案 0 :(得分:2)
此行中有错误
mysql_query("INSERT INTO `members`(img) VALUES ('$_FILES["file"]["name"]')");
将该行更改为
mysql_query("INSERT INTO `members`(img) VALUES ('{$_FILES["file"]["name"]}')");
<强>更新强>
错误是Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING on line 30
注意:请勿使用mysql_*
功能,不久将弃用它们。而是使用PDO或mysqli功能。在将数据插入数据库之前,总是验证数据并注意SQL注入。
答案 1 :(得分:1)
Please, don't use mysql_*
functions in new code。它们不再被维护,deprecation process已经开始了。请参阅red box?转而了解prepared statements,并使用PDO或MySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial。
但是,请检查upload/
文件夹是否具有read and write
权限并使用此工作代码:
mysql_query("INSERT INTO `members`(img) VALUES ('" . $_FILES["file"]["name"] . "');");
看到使用该代码存在SQL注入漏洞,我建议您通过PDO
准备查询。
如果您需要更新现有记录,请使用:
mysql_query("UPDATE `members` SET img = '" . $_FILES["file"]["name"] . "' WHERE member_id = '" . $member_id . "';");
如果您必须向现有会员添加新图片,可以尝试:
mysql_query("INSERT INTO `members` (img, member_id) VALUES ('" . $_FILES["file"]["name"] . "', '" . $member_id . "');");