如何在codeigniter中的update_batch之前给出where条件?

时间:2013-05-04 07:12:00

标签: codeigniter

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

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

2 个答案:

答案 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用户的名称设置为Foouser_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的更多详细信息