图片上传无效

时间:2012-12-06 14:37:14

标签: php mysql upload

我有这个上传脚本但是当我想运行它时,页面返回空白。有一些问题,但我无法弄清楚错误在哪里以及如何解决。如果有人帮我制作这个剧本,我将不胜感激! 非常感谢!

<?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";
      }
    ?>

2 个答案:

答案 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,并使用PDOMySQLi - 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 . "');");