获取 SQL 语法错误


Getting an SQL syntax error

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

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

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

您的 SQL 语法有误;请查看手册 对应于您的MySQL服务器版本,以便使用正确的语法 靠近"更新")第 1 行的值("14"、"2012-05-06"、"测试更新")"

如果有人可以帮助我解决这个问题,那就太好了,也许这是显而易见的,但我就是看不出这里出了什么问题!

按如下所示更改查询:

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

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

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}')

update 是 SQL 中的一个关键字,请将您的 mysql 字段封装在反引号中。

首先也是最重要的事情:你不能使用mysql preservword。使用它时,请准备好浪费时间找出错误。以下是保留词的列表: 不要在其中使用任何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}')"

希望这对你有帮助