2010-11-12 125 views
4

请参考这个问题,我问
Codeigniter Insert Multiple Rows in SQL笨插入多维数组排在MySQL

要重申

<tr> 
<td><input type="text" name="user[0][name]" value=""></td> 
<td><input type="text" name="user[0][address]" value=""><br></td> 
<td><input type="text" name="user[0][age]" value=""></td> 
<td><input type="text" name="user[0][email]" value=""></td> 
</tr> 
<tr> 
<td><input type="text" name="user[1][name]" value=""></td> 
<td><input type="text" name="user[1][address]" value=""><br></td> 
<td><input type="text" name="user[1][age]" value=""></td> 
<td><input type="text" name="user[1][email]" value=""></td> 
</tr> 
.......... 

可以插入MySQL作为本

foreach($_POST['user'] as $user) 
{ 
    $this->db->insert('mytable', $user); 
} 

此结果在多个MySQL查询中。是否有可能进一步优化它,使得插在一个查询时

像这样的事情

insert multiple rows via a php array into mysql

但考虑codeigniters的优势,简单的语法。谢谢

+4

除非你有记录的几十万插入,你不会得到任何东西,真正的瓶颈是表的索引,而不是圆多次运行查询的成本。 – 2010-11-12 15:34:41

回答

0

CodeIgniter似乎没有多插入方法。此外,即使有,你可能会遇到这样的问题:

  • 击中最大查询长度上限
  • 有锁定该表直至插入完成
  • 处理错误可能会有点困难
  • ...
0

Codeigniter 2(即将发布)将有一个批量插入方法。

+0

谢谢,我已经在使用ci 2,会查阅文档。 – 2010-11-13 11:08:33

0

在CI 2中,有一个set_insert_batch() Active Record功能。

+1

尽管没有文档,并且我组装的数组没有插入 – 2011-01-03 01:59:42

3

它现在证明以及可能对别人有用:

$data = array(
    array(
     'title' => 'My title' , 
     'name' => 'My Name' , 
     'date' => 'My date' 
    ), 
    array(
     'title' => 'Another title' , 
     'name' => 'Another Name' , 
     'date' => 'Another date' 
    ) 
); 

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

// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date'), ('Another title', 'Another name', 'Another date')