2016-07-31 64 views
1

我试图通过提交表格插入数据,这是我得到PHP:你在你的SQL语法错误检查手册

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

DESC是一个保留字,使用反引号,\'递减\' – Mihai

+2

或者,更好的,不使用递减 – Strawberry

+0

感谢都是好样儿的 – Sikander

回答

2

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

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

你的情况是一个原因,总是对列名或表名进行反编译以确保即使突然保留一个单词,代码也不会中断。

2

desc是保留字。如果您可以控制架构,我建议您将该列重命名为非保留字,例如description。如果这是不可能或不可行,那么您可以使用回蜱周围逃跑的列名:

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

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

相关问题