2013-07-17 88 views
1

我通過網絡搜索,但我沒有找到任何解決方案, 我的問題是,我現在如何在更新過程中如果行值已更改或不是 或者如果一行受到影響?如何檢查一行是否受codeigniter活動記錄影響

+1

使用此:$ this-> db-> affected_rows(); – senthilbp

+0

這是真的,可能是[答案](http://stackoverflow.com/questions/10766031/mysql-database-update-and-codeigniter-rows-affected-function?rq=1)。正如旁註:'affected_rows()'不屬於CI活動記錄,它是CI SQL驅動程序的一部分。 –

回答

3

使用affected_rows();

$this->db->affected_rows() 

顯示做 「寫」 類型的查詢(INSERT,UPDATE,等)時,受影響的行數。

3

當我們使用CodeIgniter工作,當出現輸入字段的值一些變化,然後$this->db->affected_rows()將返回一個值大於0

,我們有兩個字段中的數據只更新, '名稱'和'電子郵件'。如果我們試圖提交表單不改變任何領域,那麼$this->db->affected_rows()將返回0,否則將返回1

一個更好的辦法是使用:

if ($this->db->affected_rows() >= 0) { 
    return true; // your code 
} else { 
    return false: // your code 
} 
+0

如果事情發生了變化,那些affected_rows信息將只返回1,這一點非常重要。我剛剛遇到了一個「upsert」函數的問題,如果該行存在,那麼期望affected_rows在update語句之後爲1。與我的預期相反,如果行存在,但更新嘗試將它設置爲與之前相同的值,那麼affected_rows將返回0。 – webtopf

0

我覺得這是最簡單的實現這一目標的途徑。

return ($this->db->affected_rows() != 1) ? false : true;