我该如何进行批量更新?

时间:2010-10-25 07:20:50

标签: php codeigniter

如何在CodeIgniter中进行批量更新,而不是每次都在数据库中触发查询?

4 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

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

答案 2 :(得分:1)

为了其他老式Code Igniter用户(像我一样):

  

您使用的是旧版本? insert_batch和update_batch已经存在超过一年 [2010年9月] 。如果您不打算升级,则必须为每一行运行插入查询,或手动构建批量插入语句。

来自:http://codeigniter.com/forums/viewthread/188416/#891199

答案 3 :(得分: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