2011-09-10 67 views
1

好吧,我現在生病了,所以也許答案就在我面前,但我一直坐在這裏過去4個小時試圖弄清楚爲什麼發生這種情況。SQL更新後,字段設置爲0 [PHP/MySQL]

基本上我有一個腳本,應該更新數據庫中的一行。 我嘗試更新的字段是「名」,它看起來像這樣:

// Updating the database with the new name 
$name = $this->db->slashes($this->friends[$row->key]); 
$sql = "UPDATE `friends` SET `name` = '" . $name . "' AND `status` = 'updated' WHERE `key` = " . $row->key . " LIMIT 1"; 
echo '-- Query: ' . $sql . '<br />'; 
$result2 = $this->db->query($sql); 

if(!$result2) 
    echo mysql_error(); 

輸出成爲這個(例子):

-- Query: UPDATE `friends` SET `name` = 'Andrew Johnsson' AND `status` = 'updated' WHERE `key` = 7823583 LIMIT 1 

它沒有產生任何mysql_error所以查詢似乎已經正確地通過了查詢,它應該剛剛更新數據庫中的一行,其中鍵是一個數字,並將新名稱設置爲Andrew Johnsson,並將狀態設置爲更新。

但是!在此更新之後查看數據庫後,此行的名稱設置爲'0'。爲什麼它做到了這一點?

任何想法爲什麼會發生這種情況? 另外,告訴我,如果你需要更多的信息能夠幫助我,我會好心提供它!

+0

模式是...? –

回答

3

您的UPDATE語法不正確。它應該是SET名='字符串',狀態='更新'在哪裏鍵...

目前,你是從字面上要求它評估AND的,以確定什麼名稱列應更新,這就是爲什麼你得到0.

+0

你知道,我顯然是受到了我打噴嚏的XD的影響! 就是這樣,它現在正在工作。非常感謝! – Tanax

+1

我們都在那裏。快點好起來吧) – gview

+0

噢,好。接得好 :) – Matchu

0

嗯,這可能太傻了,但name是一個字符串字段,對不對?如果將其設置爲任何類型的整數字段,則會發生這種情況:字符串被解析爲0

我敢打賭,這比稍微複雜一點。

+0

謝謝!但是,不,這比它複雜一點:) – Tanax