Php 如何进行批量更新?

Php 如何进行批量更新?,php,codeigniter,Php,Codeigniter,我如何在CodeIgniter中进行批量更新,而不是每次在数据库中启动查询?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-&

我如何在CodeIgniter中进行批量更新,而不是每次在数据库中启动查询?

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

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

为了其他老式的CodeIgniter用户(比如我自己):

你用的是旧版本?插入批次和更新批次已存在一年多[2010年9月]。如果不打算升级,则必须对每一行运行insert查询,或手动构造一个batch insert语句


发件人:

这个问题是关于更新的,但公认的答案是关于插入的

以下是如何进行批量更新:

$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用户指南:


要添加到注释中,还可以使用查询绑定。这样CI将为您自动转义值。例如,“插入表(id,Col1,Col2)值(?,?,(?,?,?)”$this->db->query($sql,数组(1,1,1,2,2,3));但这将在“my_table”表中批量插入新数据。我们如何定义WHERE子句来批量更新包含特定电子邮件地址的特定行。