所以我在我的网站上设置了一个下载数据库,使我能够跟踪下载次数,并且我试图为我和我的同胞设置一个前端来插入新的下载。数据库。我主要用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行。
感谢任何帮助:)
答案 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
上的保留字列表答案 3 :(得分:1)
请试一试。
$sql = "INSERT INTO dl (`id`, `file`, `desc`) VALUES ('".$idd."', '".$file."', '".$desc."')";
希望这对你有用。