2017-05-03 44 views
-3

我的代碼顯示了以下錯誤,我不知道如何來糾正:如何調試MySQL SQL語句中的語法錯誤?

你在你的SQL語法錯誤,檢查手冊對應到你的MySQL服務器版本使用附近的「正確的語法)「在1號線

$query="insert into subjective_result(marks,roll_no)values($marks,$roll)";  
mysql_query($query)or die(mysql_error()); 
+0

爲什麼你使用** mysql _ \ ***棄用方法?,你應該使用** mysqli _ \ ***方法。 –

+0

在你的mysql查詢中給出適當的空格。將其更改爲'$ query =「insert into subjective_result(marks,roll_no)values($ marks,$ roll)」; ' –

+0

請閱讀[在什麼情況下我可以添加「緊急」或其他類似的短語到我的問題,以獲得更快的答案?](https://meta.stackoverflow.com/q/326569) - 摘要是這不是解決志願者問題的理想方式,而且可能對獲得答案起反作用。請不要將此添加到您的問題中(特別是標題中,它會更加刺激用戶)。 – halfer

回答

2

因爲你沒有逃脫的投入應該是

$query="insert into subjective_result(marks,roll_no)values('$marks','$roll')";  

不管怎麼說這不是最好的方法,你必須使用準備好的語句和包裝,如PDO。如果連接自己的查詢,您可能會遇到SQL注入漏洞。

像這樣的事情

// didn't test it 
    $stmt = $db->prepare('insert into subjective_result(marks,roll_no)values(:marks,:roll_no)'); 
    $stmt->bindValue(":marks", $marks); 
    $stmt->bindValue(":roll_no", $roll_no); 

    if ($stmt->execute()) { 
     //code here 
    } 
+1

三個答案,只有一個想提到參數綁定。幹得好! – halfer

-1

試試這個:

$query="insert into subjective_result(`marks`,`roll_no`)values(".$marks.",".$roll.")"; 

我們推薦始終以「`」(反引號字符,這往往是關鍵包裹在SQL語句中的列名通過Tab鍵)。

此外,$marks$roll是變量,它們不能像普通文本那樣插入到字符串中,因此您必須將它們與字符串查詢連接起來。

+0

這可能會修復即時錯誤,但它也可能會產生SQL注入漏洞。 – halfer