2013-12-22 76 views
1

列我有以下行:更新多行/在PHP/MySQL的

$reset = "UPDATE pidgeon SET obt='" . $hour . "' WHERE tag='" . $tag . "'"; 

哪些更新就好了。不過,我需要更新一個額外的行(殺),我不斷收到語法錯誤。我試過以下內容:

$reset = "UPDATE pidgeon SET obt='" . $hour . "', kill='1' WHERE tag='" . $tag . "'"; 

$reset = "UPDATE pidgeon SET kill='1', obt='" . $hour . "' WHERE tag='" . $tag . "'"; 

$reset = "UPDATE pidgeon SET obt='" . $hour . "', kill='" . $num . "' WHERE tag='" . $tag . "'"; 

我甚至完成了2個獨立的UPDATE查詢,並且我得到了相同的語法錯誤消息。我已經縮小到系統有殺行問題,但我不知道是什麼問題。我試過設置 kill作爲INT,SMALLINT,BOOL,甚至CHAR,並嘗試使用't/f'作爲它的值。我仍然收到語法錯誤。有什麼建議麼?

+0

你會得到什麼語法錯誤? – andrewsi

+0

[由於在MySQL中使用保留字作爲表或列名稱而導致的語法錯誤]的可能重複(http://stackoverflow.com/questions/23446377/syntax-error-due-to-using-a-reserved-word -as-a-table-or-column-name-in-mysql) – michaelb958

回答

1

KILLreserved keyword,所以你必須把它們放在反引號,像這樣:

$reset = sprintf("UPDATE pidgeon SET `kill`='1', obt='%s' 
WHERE tag='%s'", $hour, $tag); 
+1

+1或者重命名它 – AlexP

+0

@AlexP:絕對的。使用更具描述性的列名稱總是更好。 –

+0

你是最棒的!非常感謝!它總是最愚蠢的錯誤。 – xv47

0

Kill實際上是一種語法,你不能直接使用它們。

只需用另一個名稱替換kill即可。