我想更新我的表,其中输入相同的输入字段名称是数组并具有 添加更多生成输入字段的函数,如下所示:
我想在codeigniter中执行update_batch 我的模型我创建了这样的函数: 这是代码块:
function update_batch_all($tblname,$data=array(),$userid)
{
$this->db->trans_start();
$this->db->where('userid',$userid);
$this->db->update_batch($tblname,$data);
$this->db->trans_complete();
return TRUE;
}
它不起作用。 任何人都可以帮助我如何使用具有where condition的更新批处理来更新表数据?
答案 0 :(得分:1)
您可以阅读update_batch()
here
以下是简短摘要:
传入一个包含where键和更新值的关联数组。作为update_batch()
调用的第三个参数,您可以指定assoc数组中的哪个键应该用于where子句。
例如:
$data = array(
array(
'user_id' => 1,
'name' => 'Foo'
), array(
'user_id' => 2,
'name' => 'Bar'
)
);
$this->db->update_batch($tbl, $data, 'user_id');
传递的参数细分:$tbl
是表名。 $data
是关联数组。 'user_id'
告诉CI,$ data中的user_id
键是where子句。
以上查询的效果:user_id = 1
用户的名称设置为Foo
,user_id=2
用户的名称设置为Bar
}。
在您的情况下,如果您想在每个数组中使用user_id
数组设置相同的data
键,则可以快速循环:
foreach ($data as &$d) {
$d['user_id'] = $user_id;
}
$this->db->update_batch($tbl, $data, 'user_id');
答案 1 :(得分:0)
You can use,
$this->db->update_batch($tblname,$data,'user_id');
但是数据中的所有数组都必须有一个字段'user_id'
例如:
$data=array(
array('user_name'=>'test1','user_id'=>1),
array('user_name'=>'test2','user_id'=>2)
);
您可以从here
获取有关update_batch的更多详细信息