用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2462|回复: 7
收起左侧

[版本 2.x] 请问如何在批量更新中使用feild=feild+1这样的功能呢?

[复制链接]
发表于 2015-2-11 16:25:19 | 显示全部楼层 |阅读模式
请问如何在批量更新中使用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');
    }

发表于 2018-1-29 16:08:37 | 显示全部楼层
额 我也再纠结这个,不知道楼主是怎么解决的
发表于 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');
发表于 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";
语句是这样的,您这个是一个固定值。我的问题可能跟这个有点区区别.
发表于 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 ...

用循环好了
发表于 2018-2-3 11:41:53 | 显示全部楼层

循环入库有点伤吧...还是想通过楼主这样的方式来跑. 您说的循环是怎么个循环呢? 求指教. 新手刚刚学哦
发表于 2018-2-3 14:26:48 | 显示全部楼层
你这个逻辑本身就有点复杂,只能自己拼接 SQL 语句了
发表于 2018-2-6 09:51:04 | 显示全部楼层
Michael锐生 发表于 2018-2-3 14:26
你这个逻辑本身就有点复杂,只能自己拼接 SQL 语句了

其实这个真的不复杂,或许是CI对于这类需求没做处理。目前自己也是采用拼接方式来执行了。。。。搜索了论坛很久,还没找到这类的需求。   现在又在insert_batch批量 这里纠结了. 批量插入后获取insert_id  目前是没有找到方法一次性获取出来  只能一条条插入,返回id 然后再拼接  纠结。。。。

本版积分规则