如何在Codeigniter中格式化insert_batch的数据?

时间:2012-02-29 19:06:43

标签: php database codeigniter

insert_batch我遇到了一些问题。我有如下输入:

<input type="text" name="title[]" />

在我的控制器中我有:

for($i=0; $i<=3; $i++)
{
    $data[] = array(
        'field' => $this->input->post('text'),
        'filed2' => $this->input->post('user')
    );
}
$this->db->insert_batch('table', $data)

我做错了什么,最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

如果你的字段名称有name="text[]"这样的括号,它会发布一个数组(你可能知道)。考虑到这一点,$this->input->post('text')将始终返回数组本身。目前,您每次都要分配完全相同的整个数组。尝试使用$i变量按键访问值:

$text = $this->input->post('text');
$user = $this->input->post('user');

for($i=0; $i<=3; $i++)
{
    $data[] = array(
        'field' => $text[$i],
        'filed2' => $user[$i]
    );
}
$this->db->insert_batch('table', $data)

作为可能更明智的替代方案,请循环遍历$_POST数据,选择一个字段名称:

$text = $this->input->post('text');
$user = $this->input->post('user');
foreach ($text as $key => $value)
{
    $data[] = array(
        'field' => $text[$key],
        'filed2' => $user[$key]
    );
}

这样你就不会拥有来知道预期会有多少值,但这完全取决于你。

答案 1 :(得分:0)

为了搜索'$ this-&gt; db-&gt; insert_batch格式'的用户的利益,可能会对以下内容感兴趣。
我正在寻找一种方法将大量信息打包到一个数组中,并将其作为一个操作插入到数据库表中。我认为insert_batch可能会这样做,但它有一个我没想到的警告: 格式化数组时,每个子数组中的字段名称必须相同.E以下内容不起作用:

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

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