bbzz7 发表于 2015-2-11 16:25:19

请问如何在批量更新中使用feild=feild+1这样的功能呢?

请问如何在批量更新中使用feild=feild+1这样的功能呢?
单个的update,可以
$this->db->set('count', 'count+1', FALSE);
$this->db->update('vote20150116');

批量的,如何设置呢:
我试了,这样子的,不行:
$vote=array(
            array(
                'id'=>$one,
                'count'=>'count+1'
            ),
            array(
                'id'=>$two,
                'count'=>'count+1'
            ),
            array(
                'id'=>$three,
                'count'=>'count+1'
            )
      );
      $this->db->update_batch('vote20150211', $vote, 'id');
    }

my_beginner 发表于 2018-1-29 16:08:37

额 我也再纠结这个,不知道楼主是怎么解决的

272021899 发表于 2018-1-30 16:32:19

my_beginner 发表于 2018-1-29 16:08
额 我也再纠结这个,不知道楼主是怎么解决的

$this->db->set('field', 'field+1', FALSE);
$this->db->where_in('id', [$one,$two,$three]);
$this->db->update('mytable');

my_beginner 发表于 2018-2-1 16:35:52

272021899 发表于 2018-1-30 16:32
$this->db->set('field', 'field+1', FALSE);
$this->db->where_in('id', [$one,$two,$three]);
$this->d ...

$sql_one = "update k_user set money=money+1 where uid=1";
$sql_one = "update k_user set money=money+2 where uid=2";
$sql_one = "update k_user set money=money+3 where uid=3";
语句是这样的,您这个是一个固定值。我的问题可能跟这个有点区区别.

272021899 发表于 2018-2-2 13:12:45

my_beginner 发表于 2018-2-1 16:35
$sql_one = "update k_user set money=money+1 where uid=1";
$sql_one = "update k_user set money=mone ...

用循环好了

my_beginner 发表于 2018-2-3 11:41:53

272021899 发表于 2018-2-2 13:12
用循环好了

循环入库有点伤吧...还是想通过楼主这样的方式来跑. 您说的循环是怎么个循环呢? 求指教. 新手刚刚学哦

Michael锐生 发表于 2018-2-3 14:26:48

你这个逻辑本身就有点复杂,只能自己拼接 SQL 语句了

my_beginner 发表于 2018-2-6 09:51:04

Michael锐生 发表于 2018-2-3 14:26
你这个逻辑本身就有点复杂,只能自己拼接 SQL 语句了

其实这个真的不复杂,或许是CI对于这类需求没做处理。目前自己也是采用拼接方式来执行了。。。。搜索了论坛很久,还没找到这类的需求。:lol   现在又在insert_batch批量 这里纠结了. 批量插入后获取insert_id目前是没有找到方法一次性获取出来只能一条条插入,返回id 然后再拼接纠结。。。。
页: [1]
查看完整版本: 请问如何在批量更新中使用feild=feild+1这样的功能呢?