1

我在PHP中有一行代码如下...

mysql_query("INSERT INTO `updates` (project_id, date, update) VALUES ('{$project}', '{$date}', '{$update}')") or die(mysql_error());

但是我收到以下 SQL 语法错误...

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“update) VALUES ('14', '2012-05-06', 'Test update')' 附近使用正确的语法

如果有人可以帮助我,那就太好了,也许这很明显,但我看不出这里有什么问题!

4

4 回答 4

1

更改查询如下:

mysql_query("INSERT INTO `updates` (`project_id`, `date`, `update`) VALUES ('{$project}', '{$date}', '{$update}')") or die(mysql_error());

这是因为 date 和 update 是 MySQL 中注册的关键字。我们不能直接在查询中使用它。我们需要逃避它。

于 2012-05-06T23:14:51.080 回答
0

首先也是最重要的事情:你不能使用mysql保存器字。当你使用它时,准备好浪费你的时间来找出错误。这是保留词列表:不要在其中使用任何词 http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

第二:即使你想敢用preserved关键字。用户表前缀或列前缀以及保留关键字。

第三:当你沿着 php 执行数据库操作时,要么在需要的地方引用每个参数,要么只引用用户简单的参数。即,如果您希望引用 db 表列而不是用引号包围每一列

"INSERT INTO `updates` (`project_id`, `date`, `update`) VALUES ('{$project}', '{$date}', '{$update}')"

如果您不引用,则不引用

"INSERT INTO updates (project_id, date, update) VALUES ('{$project}', '{$date}', '{$update}')"

希望这会对你有所帮助

于 2012-05-07T10:48:33.713 回答
0

dateupdate是 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}')
于 2012-05-06T23:14:34.977 回答
0

update是 SQL 中的关键字,将您的 mysql 字段封装在反引号中。

于 2012-05-06T23:15:18.583 回答