2016-07-31 105 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

相關問題