2013-06-25 37 views
0

更新多行我讀過類似的問題和答案,仍然沒有想法,所以不要拍:)笨:模型

我想這一點:

Array ([0] => Array ([id] => 3 [paid_date] => 2013-06-25 20:37:35 [statement_status] => P) [1] => Array ([id] => 4 [paid_date] => 2013-06-25 20:37:35 [statement_status] => P)) 

$this->db->update_batch('credit_statement', $data, 'id'); 

和回報:

A Database Error Occurred 
You must use the "set" method to update an entry. 

,並認爲我尊重笨書:

$data = array(
    array(
     'title' => 'My title' , 
     'name' => 'My Name 2' , 
     'date' => 'My date 2' 
    ), 
    array(
     'title' => 'Another title' , 
     'name' => 'Another Name 2' , 
     'date' => 'Another date 2' 
    ) 
); 

$this->db->update_batch('mytable', $data, 'title'); 

// Produces: 
// UPDATE `mytable` SET `name` = CASE 
// WHEN `title` = 'My title' THEN 'My Name 2' 
// WHEN `title` = 'Another title' THEN 'Another Name 2' 
// ELSE `name` END, 
// `date` = CASE 
// WHEN `title` = 'My title' THEN 'My date 2' 
// WHEN `title` = 'Another title' THEN 'Another date 2' 
// ELSE `date` END 
// WHERE `title` IN ('My title','Another title') 

我在做什麼錯?

+1

顯示您的實際數組定義PHP語句,而不僅僅是印刷版本。 – Wolf

+1

請發佈您的代碼 –

+0

謝謝你們,這是一個拼寫錯誤,而不是$ data我使用$ data_r:D –

回答

3

當您在update_batch方法中調用它時,您尚未設置$ data變量。

更改此:

Array ([0] => Array ([id] => 3 [paid_date] => 2013-06-25 20:37:35 [statement_status] => P) [1] => Array ([id] => 4 [paid_date] => 2013-06-25 20:37:35 [statement_status] => P)) 

要這樣:

$data = Array ([0] => Array ([id] => 3 [paid_date] => 2013-06-25 20:37:35 [statement_status] => P) [1] => Array ([id] => 4 [paid_date] => 2013-06-25 20:37:35 [statement_status] => P)); 
+0

請檢查你的數組是否與var_dump或print_r –

+0

對不起,在原始代碼中設置,那只是他數組print ... with print_r,當然 –

+0

實際上是數組名稱的拼寫錯誤,所以你以間接的方式向我顯示了錯誤。你有我的投票。 –