我的SQL / PHP语法有什么问题?

时间:2014-07-11 05:38:41

标签: php mysql

所以我在我的网站上设置了一个下载数据库,使我能够跟踪下载次数,并且我试图为我和我的同胞设置一个前端来插入新的下载。数据库。我主要用PHP设置前端。

我的分页设置方式消除了我的表单发布的可能性,所以我有JS序列化数据并重新加载页面,然后我在PHP中反序列化数据,将值粘贴到mysql查询中,然后尝试运行它。

这里是我的SQL代码在PHP中的样子:

$sql  = "INSERT INTO dl (id, file, desc) VALUES ('$idd', '$file', '$desc')";

变成这个字符串:

INSERT INTO dl (id, file, desc) VALUES ('a56', 'test.zip', 'cake')

但是当页面试图运行它时,我收到此错误:

  

您有错误   在你的SQL语法中;查看与MySQL对应的手册   服务器版本,用于使用接近' desc)VALUES的正确语法(' a56',   ' test.zip',' cake')'在第1行

由于运行查询的代码行不在第1行这一事实,这种情况更加复杂。它位于第28行。

感谢任何帮助:)

4 个答案:

答案 0 :(得分:6)

desc是MySQL中的reserved keyword

建议的解决方法是使用反引号。来自MySQL manual

  

如果标识符包含特殊字符或是保留字,那么只要您引用它,就必须引用它。

如果无法重命名表或列,请在反引号(`)中包装违规标识符:

$sql  = "INSERT INTO dl (id, `file`, `desc`) VALUES ('$idd', '$file', '$desc')";

也要看一下这个问题:When to use single quotes, double quotes, and backticks in MySQL

答案 1 :(得分:1)

desc是SQL中的保留字。

它(与ASC一起)用于确定结果的排序顺序。

答案 2 :(得分:1)

请更改desc的列名,由MYSQL保留。有关详细信息,请参阅MYSQL Reserved Words

上的保留字列表

http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

答案 3 :(得分:1)

请试一试。

$sql  = "INSERT INTO dl (`id`, `file`, `desc`) VALUES ('".$idd."', '".$file."', '".$desc."')";

希望这对你有用。