2010-10-25 2 views

ответ

1

активный класс записи CodeIgniter имеет метод insert_batch(), которая делает именно это и заботится о побеге данных.

$data = array(
    array('name' => 'John', 'email' => '[email protected]'), 
    array('name' => 'Sue', 'email' => '[email protected]') 
); 

$this->db->insert_batch('my_table', $data); 

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

+2

, но это будет ** INSERT ** новые данные как пакет в таблице «my_table». Как мы определяем предложение ** WHERE ** для пакетного обновления определенных строк, содержащих определенные адреса электронной почты. –

3

Mysql может выполнять несколько обновлений или вставок. Обычно в шаблоне Active Record вы вставляете один за другим, но для массовых обновлений или вставок вы можете это сделать.

$sql = "INSERT INTO table (id,Col1,Col2) VALUES (1,1,1),(2,2,3),(3,9,3),(4,10,12) ON DUPLICATE KEY UPDATE Col1=VALUES(Col1),Col2=VALUES(Col2);"; 
$this->db->query($sql); 
+0

Чтобы добавить в свой комментарий, вы можете также использовать привязки запроса с что. Таким образом, CI автоматически сохранит ваши ценности. то есть. «INSERT INTO table (id, Col1, Col2) VALUES (?,?,?), (?,?,?)" $ This-> db-> query ($ sql, array (1,1,1,2, 2,3)); –

1

Ради других старомодных пользователей код воспламенитель (как я):

Вы используете старую версию? insert_batch и update_batch уже более года [сентябрь/2010]. Если вы не собираетесь обновлять, вам придется запускать запрос на вставку для каждой строки или вручную создавать инструкцию вставки пакета.

От: http://codeigniter.com/forums/viewthread/188416/#891199

0

Этот вопрос был об обновлениях, но принятый ответ для вставки.

Вот как это можно сделать пакетное обновление:

$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'); 

Этот пример из руководства пользователя CodeIgniter:

http://ellislab.com/codeigniter/user-guide/database/active_record.html#update

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