2010-10-25 42 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

,但是这会在表'my_table'中将**新数据作为批处理插入。我们如何定义** WHERE **子句来批量更新包含特定电子邮件地址的特定行。 – 2011-11-27 12:18:37

3

Mysql可以做多个更新或插入。通常在一个活动记录模式中,您可以逐个插入,但对于批量更新或插入,您可以执行此操作。

$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)); – 2010-10-25 19:14:28

1

对于其他老式代码点火器用户着想(像我一样):

您使用的是旧版本? insert_batch和update_batch已经存在了一年多的时间[Sep/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