2014-03-26 34 views
0

我似乎無法在用戶指南中找到明確的解釋。在CodeIgniter活動記錄中,爲了更新表格行,似乎需要做三件事:(1)識別要更新的記錄;(2)定義需要更改的記錄;(3)提交更改。請解釋CodeIgniter的ActiveRecord設置()更新()

不知何故,無論我如何閱讀手冊,目前尚不清楚。 http://ellislab.com/codeigniter/user-guide/database/active_record.html#update

它似乎意味着「設置」是關於插入 - 這意味着將行添加到我的書中的表。

「更新」是關於「改變」現有的信息。

對我而言,唯一的方法就是完成所有三項操作。

像這樣:

$this->db->where('id',$userid);   //selecting the right user 
$this->db->set($SubscriptionChoices); //setting the new values to be written 
$this->db->update('userprefs');   //Do it. Update table userprefs 

回答

0

所以你在呼喚「設置」 - 它只是要更新的特定字段和你正在使用的值。就像從一個簡單的表格,以更新的名稱

$updatedata = array(
     'first' => $this->input->post('first', TRUE), 
     'last' => $this->input->post('last', TRUE), 
     'statuscheck' => 'Name updated' 
     ); 

,然後將該數據與記錄ID傳遞給方法做更新

function update($id, $updatedata) { 

    $this->db->where('id', $id); 
    $this->db->update('yourtablename', $updatedata); 

    if ($this->db->affected_rows() == '1') {return TRUE;} 

    else {return FALSE;} 

} // 

注意到一個有點惱人的細節 - 如果你更新記錄 - 具有相同的信息 - 就像在這種情況下,如果有人更新了記錄,但名字和姓氏相同 - 那麼它將返回'假' - 因爲沒有更新。

所以如果你在更新數組中包含一個字段,比如日期時間秒,它總是會不一樣 - 那麼你就不會有這個問題。

+0

是的,但我的觀點是,我無法讓它工作。它一直抱怨我不得不使用「set()」。所以當你說' - > db-> where',然後' - > db-> update'時,我發現我必須使用' - > db-> where'然後' - > db-> set',然後使用' - > DB-> update'。這是我沒有得到的。 – Maxcot

+0

上面的代碼工作。這聽起來像是你傳遞給update方法的數據數組有問題。嘗試一些簡單的測試。 – cartalot