Codeigniter在SQL中插入多行

Mr *_*yde 8 mysql sql optimization codeigniter batch-insert

我对Codeigniter很新鲜.我的表格看起来像这样.

<tr>
<td><input type="text" name="Name[0]" value=""></td>
<td><input type="text" name="Address[0]"  value=""><br></td>
<td><input type="text" name="Age[0]" value=""></td>
<td><input type="text" name="Email[0]" value=""></td>
</tr>



<tr>
<td><input type="text" name="Name[1]" value=""></td>
<td><input type="text" name="Address[1]"  value=""><br></td>
<td><input type="text" name="Age[1]" value=""></td>
<td><input type="text" name="Email[1]" value=""></td>
</tr>
Run Code Online (Sandbox Code Playgroud)

可能有0到n行,通常是5到10行.如何在SQL中插入它们?这可能与Codeigniter或我应该使用本机PHP脚本?


$name=$_POST['Name'];
$address=$_POST['Address'];
$age=$_POST['Age'];
$email=$_POST['Email'];
$count = count($_POST['Name']);



for($i=0; $i<$count; $i++) {
$data = array(
           'name' => $name[$i], 
           'address' => $address[$i],
           'age' => $age[$i],
           'email' => $email[$i],

           );


  $this->db->insert('mytable', $data);
}
Run Code Online (Sandbox Code Playgroud)

我这样做了 有用.但解决方案似乎不够优雅.

kevtrout的答案看起来更好,但目前正在抛出很多错误.

有没有办法一次性插入所有数据?

Som*_*luk 23

codeigniter现在支持多个插入/批量插入.它将触发一个查询而不是触发太多查询.

$data =array();
for($i=0; $i<$count; $i++) {
$data[$i] = array(
           'name' => $name[$i], 
           'address' => $address[$i],
           'age' => $age[$i],
           'email' => $email[$i],

           );
}

$this->db->insert_batch('mytable', $data);
Run Code Online (Sandbox Code Playgroud)


Mis*_*cha 8

使你的表格像这样:

<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>
Run Code Online (Sandbox Code Playgroud)

然后你可以简单地做:

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

  • 看看`insert_batch()`方法[http://codeigniter.com/user_guide/database/active_record.html] (4认同)