【问题标题】:MySQL: "You have an error in your SQL syntax... near 'desc) VALUES ('Idea','Description')'" [duplicate]MySQL:“您的 SQL 语法有错误……在 'desc) VALUES ('Idea','Description')' 附近”[重复]
【发布时间】:2011-07-18 11:48:33
【问题描述】:

我正在尝试让 MySQL 为我的表单提交工作。我在尝试插入表格时遇到问题。
当我将信息放入表单并单击提交时(在此示例中,一个字段中的信息是“想法”,另一个字段中的信息是“描述”),我收到以下回复:

"您的 SQL 语法有错误; 检查对应的手册 您的 MySQL 服务器版本 在 'desc) VALUES 附近使用正确的语法 ('Idea','Description')' 在第 1 行"

我正在从网络服务器运行一个 .php 文件来执行这个脚本。

这是我当前的代码:

<?php

mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("date_ideas") or die(mysql_error());
$title=$_POST['title'];
$title=mysql_real_escape_string($title);
$desc=$_POST['desc'];
$desc=mysql_real_escape_string($desc);
$submit="INSERT INTO ideas (title, desc) VALUES ('$title','$desc');";

mysql_query($submit) or die(mysql_error());

echo ("Idea submitted.  Click <a href='Webroot/submit.php'>here</a> to go back and post another idea.");
?>

如果您调用使用的变量的回显,它会成功传递信息,所以这不是问题。

【问题讨论】:

    标签: php mysql mysql-error-1064


    【解决方案1】:

    可能是因为desc是SQL中的关键字。尝试不同的名称。 desc 用于对结果进行降序排序。

    一般来说,我建议避免在列名中使用保留字。

    【讨论】:

      【解决方案2】:

      desc 是保留关键字(ORDER BYDESCENDING 的缩写)。

      用反引号括起来:

      INSERT INTO ideas (title, `desc`) VALUES ('$title','$desc');
      

      【讨论】:

      • 谢谢,效果很好。我总是忘记保留哪些字。
      猜你喜欢
      • 2018-04-16
      • 2016-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-09
      • 2016-01-14
      相关资源
      最近更新 更多