2010-06-18 64 views
1

我不會問我是否不知道我有100%不知道爲什麼這不起作用,所以,在PHP中,我只是試圖更新MySQL數據庫中的值:這個SQL UPDATE查詢有什麼問題?

字段即時更新 - 名稱:讀 - 類型:TINYINT - 長度:1

這裏是PHP代碼:

do_SQL( 「UPDATE消息SET讀取= 1 WHERE ID ='」。 $ id爲 「'」)。

的do_SQL功能工作一切,所以它的東西不對本聲明。我曾嘗試將1放入'1',但仍然無法正常工作.m 錯誤如下:

您的SQL語法錯誤; 檢查對應 你的MySQL服務器版本使用附近的 正確的語法手冊「讀= 1,其中 ID =」 1行

感謝您閱讀1「」!

+0

+1爲錯誤答案的轉換你設法引起他的 – 2010-06-18 02:05:09

回答

3

read是MySQL中的關鍵字,這樣你就不能沒有它引用(反引號帶)使用它:

do_SQL("UPDATE messages SET `read`=1 WHERE id='".$id."'"); 
+0

唉唉!我實際上搜索了一些'保留字'列表,但沒有找到任何東西。該死的我討厭SQL和所有惱人的引語,文字和東西......謝謝! – Tommo 2010-06-18 02:00:41

+2

@Tommo Khorkrak在[他的回答]中將其鏈接到它(http://stackoverflow.com/questions/3066756/whats-wrong-with-this-sql-update-query/3066769#3066769);它在這裏:http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html – 2010-06-18 02:01:28

+0

@Tommo - 愛SQL,你需要它。 – mauris 2010-06-18 02:13:09

0

沒有轉義字符。

do_SQL('UPDATE messages SET read=1 WHERE id=\''.$id.'\''); 
+0

字符串中使用雙引號,所以他並不需要他們 – 2010-06-18 02:02:42

1

如果id是數字,嘗試又名刪除引號:

do_SQL("UPDATE messages SET `read` = 1 WHERE id = ".$id); 
3

讀取可能是MySQL中的一個保留字。

沒錯它是MySQL Reserved Words

下一次創建與很可能是由數據庫系統已經使用的名字在列前檢查清單。

1

不要引用$ id。讓PHP在字符串中進行替換。

do_SQL("UPDATE messages SET read=1 WHERE id=$id."); 
+0

謝謝,這也有幫助:) – Tommo 2010-06-18 02:01:10

+0

@Tommo在SQL語句中引用數字實際上沒有問題 – 2010-06-18 02:02:09