Php 获取SQL语法错误

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”、“测试更新”)附近 如果有人能帮

我有一行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”、“测试更新”)附近


如果有人能帮我这将是伟大的,也许这是显而易见的,但我只是看不出这里出了什么问题

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。当查看这些错误时,它真的很有帮助。