如何在CodeIgniter中进行批量更新,而不是每次都在数据库中触发查询?
答案 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月] 。如果您不打算升级,则必须为每一行运行插入查询,或手动构建批量插入语句。
答案 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