0

我想更新我的表,其中输入相同的输入字段名称是数组,并添加了更多生成输入字段的函数,如下所示:

我想在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 条件的更新批处理更新表数据?

4

2 回答 2

1

你可以在这里阅读文档update_batch()

这是简短的摘要:

您传入一个关联数组,其中包含您的 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 user_id$data 中的键是 where 子句。

上述查询的效果:设置为的用户名称和user_id = 1设置为Foo的用户名称。user_id=2Bar

在您的情况下,如果您想user_id在每个数组中使用您的data数组设置相同的键,您可以执行快速 for 循环:

foreach ($data as &$d) { 
  $d['user_id'] = $user_id;
}


$this->db->update_batch($tbl, $data, 'user_id');
于 2013-05-04T07:17:49.960 回答
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)

                  );

您可以从此处获取有关 update_batch 的更多详细信息

于 2013-05-04T07:27:10.403 回答