在Codeigniter中运行多个以分号分隔的查询

时间:2016-05-23 15:02:31

标签: php mysql codeigniter insert

有没有办法在没有insert_batch()的Code Igniter中运行多个以分号分隔的查询?

e.g:

$a = 'INSERT INTO table (a,b,c) VALUES (1,2,3); INSERT INTO table1 (x,y,z) VALUES (1,2,3);';
$this->db->query($a);

以上代码会导致invalid query错误。

1 个答案:

答案 0 :(得分:2)

如果多个表包含单个数据(使用Transactions) - (N表对1数据)

Running Transactions Manually

$this->db->trans_begin();

$this->db->query('INSERT INTO table (a,b,c) VALUES (1,2,3)');
$this->db->query('INSERT INTO table1 (x,y,z) VALUES (1,2,3)');

if ($this->db->trans_status() === FALSE)
{
    $this->db->trans_rollback();
}
else
{
    $this->db->trans_commit();
}

Running Transactions Automatically

$this->db->trans_start();
$this->db->query('INSERT INTO table (a,b,c) VALUES (1,2,3)');
$this->db->query('INSERT INTO table1 (x,y,z) VALUES (1,2,3)');
$this->db->trans_complete();

如果插入具有多个数据的单个表(1个表对N个数据)

$data = array(
   array(
      'a' => 'My title 1' ,
      'b' => 'My Name 1' ,
      'c' => 'My date 1'
   ),
   array(
      'a' => 'My title 2' ,
      'b' => 'My Name 2' ,
      'c' => 'My date 2'
   )
);

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