2012-11-19 28 views
-1

您的SQL語法錯誤;檢查對應於你的MySQL服務器版本正確的語法在1號線

查詢作品使用近「」,但錯誤報告「臭蟲」我:)

//the vars i use 
$pos = $_POST['positie']; //this can be B1 till M100 
$kolom = $pos[0];   //get first char of the $pos string 
$rij = substr($pos, 1, 3); //get the rest of the chars 

$sql= mysql_query("UPDATE floorplan SET available='0' WHERE kolom='$kolom' AND rij='$rij'") or die(mysql_error()); 

的kolom是手動varchar(4),rij是int(4)並且可用是BOOLEAN。

+0

什麼是**價值**的$ kolom? –

+5

可能的重複[最好的方法來防止SQL注入?](http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection) –

+2

夥計。 **檢查你的輸入!! ** – Rijk

回答

0

在MySQL,布爾值被簡單地代名詞TINYINT(1)。值0被認爲是FALSE。因此,改變

$rij = substr($pos, 1, 3); 

$rij = intval(substr($pos, 1, 3)); 

和查詢

"UPDATE floorplan SET available=0 WHERE kolom='$kolom' AND rij=$rij" 

會解決你的問題,但像其他人說,你應該想想SQL Injection

+0

rij不是布爾!可用的是 –

+0

謝謝,這確實照顧我的錯誤。我會試圖防止SQL注入:) – TrustMe

+0

@KiroConeski你是對的。我使用的是0 withouth qoutes,我離開了我的substr,就像它在OP中一樣。 – TrustMe

0

假設$ pos的值爲「B1」。

然後,substr($pos, 1, 3);將返回超出界限的異常。

嘗試用substr($pos, 1);

+0

謝謝,基羅我認爲這是解決方案的一部分:) – TrustMe

相關問題