我在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中的注册关键字。我们不能直接在查询中使用它。我们需要逃避它。
date
和update
是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}')"
希望这对你有帮助