2014-01-09 79 views
-1

我試圖得到這個工作,但我不能我SQLI更新錯誤語法

$sql="UPDATE QuickLink SET `Order`=$_O, `Text`=$_T, `Address`=$_A WHERE ID=$ID"; 

插入刪除和選擇都在努力,但我不能得到這個工作,我不斷收到了同樣的信息。

錯誤:您的SQL語法有錯誤;檢查對應於你的MySQL服務器版本使用附近的「道場的學生,Address =」 http://student.classdojo.com/#!/login「WHERE ID =」在行1

+1

做一個'echo sql;'你可能會看到問題:你將用引號包圍數據。 –

+2

請使用PDO參數化查詢。 – Ryan

回答

1
$sql="UPDATE QuickLink SET `Order`='" . $_O . "', `Text`='" . $_T ."', `Address`='" . $_A . "' WHERE ID=$ID"; 
0

更好地利用查詢與參數從保護正確的語法手冊SQL注入:

$sql="UPDATE QuickLink SET `Order`=?, `Text`=?, `Address`=? WHERE ID=?"; 

if ($stmt = $conn->prepare($sql)) { 
    $stmt->bind_param("issi", $_O, $_T, $_A, $ID); 
    $stmt->execute(); 
} 

如果訂單是一個字符串字段,把s,而不是我。

0

這最有可能看起來像$ _O或$ _T有一個單引號Pekka建議。此外,既然你使用的是MYSQLI,你應該使用mysqli_real_escape_string

打印你的$ sql之前像Pekka建議執行。

如果我不得不猜測一個解決方案,那麼它將圍繞帶有單引號的文本字段。

$sql="UPDATE QuickLink SET `Order`="'".$_O."'", `Text`="'".$_T."'", `Address`="'".$_A."'" WHERE ID=$ID"; 

祝你好運!

+1

「另外,既然你使用的是MYSQLI,你應該使用mysql_real_escape_string」 - extra'I'在那裏? – Ryan

+0

不是。檢查出http://us1.php.net/manual/en/class.mysqli.php – Kalagen

+0

是的,你顯示並鏈接到'mysql_real_escape_string'而不是'mysqli_real_escape_string' @Kalagen –