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

[已解决] CI DB类里计数问题,类似点赞+1等功能

[复制链接]
发表于 2015-5-29 15:47:37 | 显示全部楼层 |阅读模式
本帖最后由 coderuner 于 2015-5-29 16:18 编辑

数据库列存点赞数
使用$this->db->update($table,$data,$condition);
这里data里面数组里面如何实现column=cloumn+1?

我这里这样写 array('column'=>'column+1') 结果是 set 'column'='column+1' 因为字段是int类型 这样字符串存进去 直接变为0

然后换成 array('column'=>'column'+1)  结果就是直接变为 set 'column'=1了

当然 肯定有人会说直接写个sql语句就能实现,我其实就是想用CI自带db类库实现这个功能

因为在array里ci支持 array('column<>'=>$var); 这样的 CI db类倒是直接结果为 'column'<>$var;了

但是在 column=column+1上 我也学那样写 完全不行....

求问 如何写实现才能得到结果 set 'column'='column'+1
发表于 2015-5-29 16:06:15 | 显示全部楼层
因为CI对数据进行安全过滤了,此时你需要使用$this->db->set('column', 'column+1', false);
注意最后一个参数,是指明是否escape的,详见手册 set方法的使用说明。
 楼主| 发表于 2015-5-29 16:16:59 | 显示全部楼层
yuzhigang5460 发表于 2015-5-29 16:06
因为CI对数据进行安全过滤了,此时你需要使用$this->db->set('column', 'column+1', false);
注意最后一个 ...

十分感谢,是小弟愚昧,遗漏CI一些基本功底的学习...

本版积分规则