2013-06-25 6 views
0

Я читал подобные вопросы и ответы, до сих пор нет идеи, поэтому не стрелять :)Codeigniter: Обновление нескольких строк в модели

Я пытаюсь это:

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. 

и чувствую, что я уважал книгу CodeIgniter:

$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

Вы не задали переменную $ data при вызове метода update_batch.

Изменить это:

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 ... с print_r, конечно –

+0

на самом деле было неправильным написанием имени массива, поэтому вы указали мне ошибку косвенным образом. у вас есть мой голос. –

Смежные вопросы