【问题标题】:Codeigniter Inserting Multidimensional Array as rows in MySQLCodeigniter在MySQL中将多维数组作为行插入
【发布时间】:2010-11-12 15:28:33
【问题描述】:

请参考我问的这个问题
Codeigniter Insert Multiple Rows in SQL

重申

<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 更简单的语法。谢谢

【问题讨论】:

  • 除非您有数十万条记录要插入,否则您将一无所获,真正的瓶颈是表索引,而不是多次运行查询的往返成本。跨度>

标签: php mysql codeigniter


【解决方案1】:
$this->db->insert_batch('table_name', $data);

查看code igniter user guide了解更多详情。

【讨论】:

    【解决方案2】:

    CodeIgniter 似乎没有多插入方法。此外,即使有,您也可能会遇到以下问题:

    • 达到最大查询长度上限
    • 在插入完成之前必须锁定表
    • 处理错误可能有点困难
    • ...

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 谢谢,我已经在使用 ci 2,将查找文档。
      【解决方案4】:

      在 CI 2 中,有一个 set_insert_batch() Active Record 函数。

      【讨论】:

      • 虽然没有文档,我组装的数组没有被插入
      猜你喜欢
      • 2021-03-07
      • 2011-05-26
      • 1970-01-01
      • 2011-12-12
      • 1970-01-01
      • 2014-05-28
      • 1970-01-01
      • 2017-07-03
      • 1970-01-01
      相关资源
      最近更新 更多