PHP:您的SQL语法有错误,请查看手册

时间:2016-07-31 06:57:45

标签: php mysql sql mysqli syntax-error

我试图通过提交表单来插入数据,这是我得到的错误

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 'desc,refno,quantity,imgname, image) 
VALUES('name','Some desc ', '123','123' at line 1

以下是我的SQL查询

$query= mysqli_query($connect,
     "INSERT INTO products(name,desc,refno,quantity) 
      VALUES('$names','$productdesc', '$refno','$quanitity')");

以下是db的附加截图 enter image description here

如果我致电print_r这就是我得到的

Array
(
    [name] => name
    [refno] => 123
    [quantity] => 123456
    [description] => Some desc 
    [submit] => Add Product
)

2 个答案:

答案 0 :(得分:2)

由于desc是保留字,因此您需要将它放在反引号之间,告诉MySQL这是一个名称,而不是desc中使用的order by

$query= mysqli_query($connect,
    "INSERT INTO products(`name`,`desc`,`refno`,`quantity`) 
     VALUES('$names','$productdesc', '$refno','$quanitity')");

你的情况是一个好理由,总是在列名或表名之类的东西上加上反引号,以确保即使一个单词突然变为保留,你的代码也不会破坏。

答案 1 :(得分:2)

desc是保留字。如果您可以控制架构,我建议您将列重命名为非保留字,例如description。如果这是不可能或不可行的,您可以通过用反向标记围绕它来转义列名:

$query= mysqli_query($connect,
                     "INSERT INTO products(name,`desc`,refno,quantity) 
                     VALUES('$names','$productdesc', '$refno','$quanitity')");

旁注:
在SQL语句中使用字符串操作会使代码容易受到SQL注入攻击。您应该考虑使用prepared statements代替。