0

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

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

2 回答 2

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 注入。

于 2012-12-06T14:42:12.723 回答
1

请不要mysql_*在新代码中使用函数。它们不再被维护,并且已经开始弃用过程。看到红框了吗?改为了解准备好的语句,并使用PDOMySQLi -本文将帮助您决定使用哪个。如果您选择 PDO,这里有一个很好的教程

但是,请检查该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 . "');");
于 2012-12-06T14:43:50.840 回答