【问题标题】:PHP Insert not Working ProperlyPHP插入无法正常工作
【发布时间】:2011-06-03 03:05:48
【问题描述】:

我的文件中有以下几行 PHP 代码以及一些其他代码:

$command = "INSERT INTO inventory_items (Index, Name, Price) VALUES (NULL, 'Diamond', '3.99')";
$insertion = mysql_query($command) or die(mysql_error());
if ($insertion == FALSE)
{
 echo "Error: Insert failed.";
}
else
{
 echo "Insert successful.";
}

它一直返回这个错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Index, Name, Price) VALUES (NULL, 'Diamond', '3.99')' at line 1

myAdmin 说我使用的是 MySQL 客户端版本 5.0.91。我究竟做错了什么?我就是想不通!我尝试了很多搜索...

【问题讨论】:

  • 这里的答案是否解决了您的问题?

标签: php mysql sql phpmyadmin


【解决方案1】:

索引是 MySQL 中的保留字,因此,您需要更改列的名称,或者使用反引号对其进行转义。试试这个$command

$command = "INSERT INTO inventory_items (`Index`, Name, Price) VALUES (NULL, 'Diamond', '3.99')";

在此处阅读有关保留字的更多信息:http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html

【讨论】:

  • 我没有在该列表中看到“db”,但我遇到了与 OP 相同的问题。我最终将我的表名更改为“dbentry”并且它起作用了。那么,是否还有其他我不知道的保留列表,或者我做错了什么?
  • @Bryan:如果你改变的只是你的表名,那么我猜 db 是另一个保留字。但不确定是否还有其他列表。
  • 作为一般规则,您应该始终用反引号将列名和表名括起来。如果 (my)SQL 的未来版本引入了新的保留字,那么您曾经工作的查询可能会失败。
  • @DeveloperChris:我同意。这实际上发生在我几年前。我不记得列名,但我相信它实际上是dateid
【解决方案2】:

试试这个:

$command = "INSERT INTO inventory_items (`Index`, Name, Price) VALUES (NULL, 'Diamond', '3.99');";

MySQL reserved words and how to treat them.

【讨论】:

  • 我已经按照您所说的进行了尝试,但得到了同样的错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“@Index, Name, Price) VALUES (NULL, 'Diamond', '3.99')' 附近使用正确的语法
  • 不是@,而是Index
  • yeeeeeeeeah 谢谢兄弟 :D:D:D 所以……奇怪的引语是怎么回事?
  • @user:这就是 MySQL 处理引用标识符的方式,不完全确定他们选择这些标识符的原因,但这就是 cookie 崩溃的方式:P
  • 必须是反引号 = ( ` )。
【解决方案3】:

您能否验证您的 inventory_items 表中的列是:

Index
Name
Price

并且您将索引字段设置为 AUTO_INCREMENT。

最好的办法可能是从插入语句中删除该字段。

试试

$command = "INSERT INTO inventory_items (Name, Price) VALUES ('Diamond', '3.99')";

因为您无论如何都没有插入索引。

希望有帮助!

【讨论】:

    猜你喜欢
    • 2013-09-30
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 2017-04-06
    • 2016-08-01
    • 2016-01-21
    相关资源
    最近更新 更多