我试图通过提交表单来插入数据,这是我得到的错误
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')");
如果我致电print_r
这就是我得到的
Array
(
[name] => name
[refno] => 123
[quantity] => 123456
[description] => Some desc
[submit] => Add Product
)
答案 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代替。