Как мне сделать пакетные обновления? - PullRequest
3 голосов
/ 25 октября 2010

Как я могу делать пакетные обновления в CodeIgniter вместо запуска запроса каждый раз в базе данных?

Ответы [ 4 ]

3 голосов
/ 25 октября 2010

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);
1 голос
/ 17 апреля 2012

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

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

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

1 голос
/ 15 апреля 2011

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

$data = array(
  array('name' => 'John', 'email' => 'john@email.com'),
  array('name' => 'Sue', 'email' => 'sue@email.com')
);

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

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

0 голосов
/ 01 мая 2014

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

Вот как вы делаете пакетное обновление:

$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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...