获取SQL语法错误

时间:2012-05-06 23:12:32

标签: php mysql sql syntax

我在PHP中有一行代码如下......

mysql_query("INSERT INTO `updates` (project_id, date, update) VALUES ('{$project}', '{$date}', '{$update}')") or die(mysql_error());

但是我收到以下SQL语法错误...

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   在第1行'更新'VALUES('14','2012-05-06','测试更新')附近

如果有人能帮助我,那会很棒,也许这很明显,但我不知道这里有什么问题!

4 个答案:

答案 0 :(得分:1)

更改查询如下:

mysql_query("INSERT INTO `updates` (`project_id`, `date`, `update`) VALUES ('{$project}', '{$date}', '{$update}')") or die(mysql_error());

这是因为日期和更新是MySQL中的注册关键字。我们不能在查询中直接使用它。我们需要逃脱它。

答案 1 :(得分:0)

dateupdate是MySQL中的保留字。

您可以使用:

"INSERT INTO `updates` (project_id, `date`, `update`) VALUES ('{$project}', '{$date}', '{$update}')"

虽然理想情况下你不应该使用保留字作为实体名称。它没有任何优点,但有一些小缺点(例如,使SQL不那么便携)。

另外,一个相当小的一点,如果project_id是整数类型字段,则传递一个整数,而不是字符串。像:

 INSERT INTO `updates` (project_id, `date`, `update`) VALUES ({$project}, '{$date}', '{$update}')

答案 2 :(得分:0)

update是SQL中的关键字,将你的mysql字段封装在反引号中。

答案 3 :(得分:0)

首先是Thing:你不能用mysql的preserver单词。当您使用它时,请准备好浪费时间找出错误。 以下是保留字的列表:不要使用任何内容 http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

第二:即使你想敢于使用保留关键字。用户表前缀或列前缀以及保留关键字。

第三: 当你沿着php执行数据库操作时,要么引用所需的每个参数,要么只引用用户简单的参数。 即如果您希望引用数据库表列而不是引用每个列的引用

"INSERT INTO `updates` (`project_id`, `date`, `update`) VALUES ('{$project}', '{$date}', '{$update}')"

如果你不引用那么引用它们

"INSERT INTO updates (project_id, date, update) VALUES ('{$project}', '{$date}', '{$update}')"

希望这会对你有所帮助