获得一个SQL语法错误
我在PHP一行代码如下...获得一个SQL语法错误
mysql_query("INSERT INTO `updates` (project_id, date, update) VALUES ('{$project}', '{$date}', '{$update}')") or die(mysql_error());
但是我得到下面的SQL语法错误...
您有一个您的SQL语法错误;检查 对应于你的MySQL服务器版本正确的语法在行中使用 附近“更新)VALUES(” 14' ,‘2012-05-06’,‘测试更新’)”手动1
如果任何人都可以帮助我,那会很好,也许这很明显,但我不能看到这里有什么问题!
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}')
Downvoter谨慎解释? – Corbin
更改查询如下:
mysql_query("INSERT INTO `updates` (`project_id`, `date`, `update`) VALUES ('{$project}', '{$date}', '{$update}')") or die(mysql_error());
这是因为日期和更新在MySQL的注册关键字。我们不能直接在查询中使用它。我们需要逃避它。
update
是SQL中的一个关键字,用反引号封装你的mysql字段。
首要的事情:你不能使用mysql保存字。当你使用它时,准备浪费你的时间找出错误。 这里是保留字的列表:不要使用任何它 http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html
第二:即使你想要使用保留关键字。用户表前缀或列前缀以及保留关键字。
第三个: 当您执行数据库操作时,要么在需要引用每个参数或只是简单的用户。 也就是说,如果你想引用数据库表中的列比报价环绕每一列
"INSERT INTO `updates` (`project_id`, `date`, `update`) VALUES ('{$project}', '{$date}', '{$update}')"
,如果你不报则引用他们没有
"INSERT INTO updates (project_id, date, update) VALUES ('{$project}', '{$date}', '{$update}')"
希望这会帮助你
有一件事在确定MySQL抱怨什么时特别有用,就是将查询保存到一个变量中,然后“回显”它。在查看这些错误时它确实有帮助。 –