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)
我做错了什么,最好的方法是什么?
答案 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);