您的 SQL 语法有误;检查与您的MySQL服务器版本相对应的手册,了解在第1行的'(..)附近使用的正确语法


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(...) at line 1

我已经查看了许多其他关于同一问题的帖子,但我似乎仍然无法找出我的代码出了什么问题。 请注意,我本周开始学习PHP和SQL,所以如果我犯了一个愚蠢的错误,请原谅我。 另外,我相信值得注意的是,在标题中发布的错误消息出现之前,还有另一个错误(在我的代码中定义)。 该错误是:

"已经存在了。"

这告诉我,无论出于何种原因,都不会设置$_POST["file"]["name"]变量。 任何帮助,不胜感激。 但是,如果你要告诉我我的代码容易受到SQL注入的影响,我知道这一点。 上传脚本只能通过我的(安全)登录脚本访问。 再次,欢迎所有帮助!

<?php
  /* Process uploaded file */
if ($_FILES["file"]["size"] < 2097152)
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Error: " . $_FILES["file"]["error"] . "<br>";
    }
  else
    {
      if (file_exists($_POST["class"] . "/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists.";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
        $_POST["class"] . "/" . $_FILES["file"]["name"]);
        $newpath = mysql_real_escape_string("uploads/" . $_POST['class'] . "/" . $_FILES['file']['name']);
        $filename = mysql_real_escape_string($_FILES['file']['name']);
        $description = mysql_real_escape_string($_POST["description"]);
        echo "Stored in: " . $newpath;
      }
    }
  }
else
  {
  echo "File must be less than two megabytes.";
  }
  /* Create and store information in MySQL Database */
  $con = mysql_connect("localhost","user","password");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("1169030_dsp", $con);
$sql="INSERT INTO $_POST[class] (Description, Filename, File)
VALUES
  ('$description','$filename','$newpath')";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "Your file was successfully uploaded.";
mysql_close($con);
?>

这是我的输入表单 HTML:

  <center>
    <form action="uploadfile.php" method="post" style="background-color:#009933;color:#FFFFFF;width:320px;text-align:left;">
  Description: <input type="text" name="description"><br>
  File:        <input type="file" name="file"><br>
      Class:<br>
  <Select name="Class">
    <option value="period1">APES : period1</option>
    <option value="period2">Chemistry I : period2</option>
    <option value="period3">Lab Assist/Sci : period 3</option>
    <option value="period4">Lab Assist/Sci : period 4</option>
    <option value="period4">APES : period 4</option>
    <option value="period5">APES : period 5</option>
    <option value="period6">Lab Assist/Sci : period 6</option>
    <option value="period7">Chemistry I : period 7</option>
  </Select><br>
      <input type="submit" name="Upload">
</form>
  <center>

您的问题是您的表单没有设置enctype属性。它应该是:

<form action="uploadfile.php" method="post" enctype="multipart/form-data" style="background-color:#009933;color:#FFFFFF;width:320px;text-align:left;">
填充

$_FILES需要enctype="multipart/form-data"

你的变量$_POST[class]是错误的,它应该是$_POST['class']

试试这个

$sql="INSERT INTO $_POST['class'] (Description, Filename, File)
       VALUES
      ('".$description."','".$filename."','".$newpath."')";