Php 获取SQL语法错误
我有一行PHP代码,如下所示Php 获取SQL语法错误,php,mysql,sql,syntax,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行“更新”值(“14”、“2012-05-06”、“测试更新”)附近 如果有人能帮
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”、“测试更新”)附近
如果有人能帮我这将是伟大的,也许这是显而易见的,但我只是看不出这里出了什么问题
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}')
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}')
将查询更改如下:
mysql_query("INSERT INTO `updates` (`project_id`, `date`, `update`) VALUES ('{$project}', '{$date}', '{$update}')") or die(mysql_error());
这是因为日期和更新是MySQL中注册的关键字。我们不能在查询中直接使用它。我们需要对其进行转义。如下更改查询:
mysql_query("INSERT INTO `updates` (`project_id`, `date`, `update`) VALUES ('{$project}', '{$date}', '{$update}')") or die(mysql_error());
这是因为日期和更新是MySQL中注册的关键字。我们不能在查询中直接使用它。我们需要逃避它。
update
是SQL中的一个关键字,将mysql字段封装在backticks中。update
是SQL中的一个关键字,将mysql字段封装在backticks中。首先也是最重要的一点:您不能使用mysql保留字。当你使用它时,准备好浪费你的时间去发现错误。
以下是保留词列表:不要使用其中任何一个
第二:即使你想大胆使用保留关键字。用户表前缀或列前缀以及保留关键字
第三:
当您使用php执行数据库操作时,要么在需要的地方引用每个参数,要么仅引用用户简单的参数。
i、 e如果您希望引用db表列,请将每列用引号括起来
"INSERT INTO `updates` (`project_id`, `date`, `update`) VALUES ('{$project}', '{$date}', '{$update}')"
如果你不引用,那就什么都不引用
"INSERT INTO updates (project_id, date, update) VALUES ('{$project}', '{$date}', '{$update}')"
希望这能帮助你首先也是最重要的一件事:你不能使用mysql保存器word。当你使用它时,准备好浪费你的时间去发现错误。 以下是保留词列表:不要使用其中任何一个 第二:即使你想大胆使用保留关键字。用户表前缀或列前缀以及保留关键字 第三: 当您使用php执行数据库操作时,要么在需要的地方引用每个参数,要么仅引用用户简单的参数。 i、 e如果您希望引用db表列,请将每列用引号括起来
"INSERT INTO `updates` (`project_id`, `date`, `update`) VALUES ('{$project}', '{$date}', '{$update}')"
如果你不引用,那就什么都不引用
"INSERT INTO updates (project_id, date, update) VALUES ('{$project}', '{$date}', '{$update}')"
希望这能对您有所帮助当您弄清楚MySQL在抱怨什么时,一件特别有用的事情是将您的查询保存到一个变量,然后
echo
它。当查看这些错误时,它真的很有帮助。当弄清楚MySQL在抱怨什么时,一件特别有用的事情是将查询保存到一个变量中,然后echo
echo。当查看这些错误时,它真的很有帮助。