我在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','测试更新')附近
如果有人能帮助我,那会很棒,也许这很明显,但我不知道这里有什么问题!
答案 0 :(得分:1)
更改查询如下:
mysql_query("INSERT INTO `updates` (`project_id`, `date`, `update`) VALUES ('{$project}', '{$date}', '{$update}')") or die(mysql_error());
这是因为日期和更新是MySQL中的注册关键字。我们不能在查询中直接使用它。我们需要逃脱它。
答案 1 :(得分:0)
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}')
答案 2 :(得分:0)
update
是SQL中的关键字,将你的mysql字段封装在反引号中。
答案 3 :(得分:0)
第二:即使你想敢于使用保留关键字。用户表前缀或列前缀以及保留关键字。
第三: 当你沿着php执行数据库操作时,要么引用所需的每个参数,要么只引用用户简单的参数。 即如果您希望引用数据库表列而不是引用每个列的引用
"INSERT INTO `updates` (`project_id`, `date`, `update`) VALUES ('{$project}', '{$date}', '{$update}')"
如果你不引用那么引用它们
"INSERT INTO updates (project_id, date, update) VALUES ('{$project}', '{$date}', '{$update}')"
希望这会对你有所帮助