2011-08-22 34 views

回答

4

update函數返回一個值:

$result = $this->db->update('mytable', $data); 

檢查值爲TRUE(成功)或FALSE(失敗)。 update運行query內部,然後返回的queryRef)的返回值:

查詢()函數返回時,「讀」式的查詢運行數據庫結果的對象,你可以用它來展現你的結果。當「寫入」類型的查詢運行時,它只是返回TRUE或FALSE,取決於成功或失敗。

+0

我試着用我的查詢「$結果= $ this-> db-> update('users',$ data,array('UserName'=> $ _POST [「UserName」]));「如果用戶名不存在於表中,它仍然返回成功 –

+0

如果你想插入而不是更新,那麼你應該這樣做,否則你可能想要配置你的db,如果你嘗試更新一個不存在的行,它會出錯。做更新,我如果不存在,則爲nsert:http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html,http://stackoverflow.com/questions/1361340/how-to-insert-if -not-exists-in-mysql – hakre

2

使用

$this->db->affected_rows() 

,看看有多少行已經影響了寫類型的查詢(UPDATE,INSERT,等等)

http://codeigniter.com/user_guide/database/helpers.html

+0

ive試過這也可以說,即時嘗試更新密碼和即時輸入相同的密碼,而不會改變然後受影響的行返回0 :( –

+0

保持你的大腦編碼時開啓,如果你沒有udpate,那麼更新不會影響任何行。該函數按照公佈的方式工作,不要成爲一個傻瓜,用它作爲工具。 – hakre

0

兩個答案都是有效的。你只需要根據情況使用每一個。如果您如果查詢被執行使用這種方法只是檢查:

$result = $this->db->update('mytable', $data); 

如果你真的想要的行數影響了第二種方法比較好:

$this->db->affected_rows() 

但是我總是使用第二種方法。更新查詢就是一個很好的例子。查詢可以成功,但數據庫中沒有任何更新,因爲您試圖更新的值實際上等於您在查詢中發送的值。

這將是一個誤報。和受影響的行將是0. 我希望它有幫助=)

+0

是的,但在這種情況下,你如何發現這是一個誤報或不? –