我的代碼顯示了以下錯誤,我不知道如何來糾正:如何調試MySQL SQL語句中的語法錯誤?
你在你的SQL語法錯誤,檢查手冊對應到你的MySQL服務器版本使用附近的「正確的語法)「在1號線
$query="insert into subjective_result(marks,roll_no)values($marks,$roll)";
mysql_query($query)or die(mysql_error());
我的代碼顯示了以下錯誤,我不知道如何來糾正:如何調試MySQL SQL語句中的語法錯誤?
你在你的SQL語法錯誤,檢查手冊對應到你的MySQL服務器版本使用附近的「正確的語法)「在1號線
$query="insert into subjective_result(marks,roll_no)values($marks,$roll)";
mysql_query($query)or die(mysql_error());
因爲你沒有逃脫的投入應該是
$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
}
三個答案,只有一個想提到參數綁定。幹得好! – halfer
試試這個:
$query="insert into subjective_result(`marks`,`roll_no`)values(".$marks.",".$roll.")";
我們推薦始終以「`」(反引號字符,這往往是關鍵包裹在SQL語句中的列名通過Tab鍵)。
此外,$marks
和$roll
是變量,它們不能像普通文本那樣插入到字符串中,因此您必須將它們與字符串查詢連接起來。
這可能會修復即時錯誤,但它也可能會產生SQL注入漏洞。 – halfer
爲什麼你使用** mysql _ \ ***棄用方法?,你應該使用** mysqli _ \ ***方法。 –
在你的mysql查詢中給出適當的空格。將其更改爲'$ query =「insert into subjective_result(marks,roll_no)values($ marks,$ roll)」; ' –
請閱讀[在什麼情況下我可以添加「緊急」或其他類似的短語到我的問題,以獲得更快的答案?](https://meta.stackoverflow.com/q/326569) - 摘要是這不是解決志願者問題的理想方式,而且可能對獲得答案起反作用。請不要將此添加到您的問題中(特別是標題中,它會更加刺激用戶)。 – halfer