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

[版本 3.x] $this->db->where('xx', $condition), CI会在$codition中的or关键字后面加空格

[复制链接]
发表于 2016-11-30 19:35:50 | 显示全部楼层 |阅读模式
$condition='never or now';
$this->db->select('*')->where('xx', $condition)->get('tablename')
echo $this->db->last_query(); //select * from tablename where xx = 'nerver or  now'; (or 和now中间有两个空格)
有解决方案吗?跟了一下代码发现是,DB_query_builder.php 中的function _compile_wh()导致的,里面有个正则
$conditions = preg_split(
                                        '/((^|\s+)AND\s+|(^|\s+)OR\s+)/i',
                                        $this->{$qb_key}[$i]['condition'],
                                        -1,
                                        PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY
                                );
 楼主| 发表于 2016-11-30 20:20:06 | 显示全部楼层
结贴,问题已经有人解决了
issue #4093
https://github.com/bcit-ci/CodeIgniter/commit/554b452845e9ec26e1cd348fda607cf00d2a5026#diff-968a5c940a77faa7f3508a631b308ab3
发表于 2016-12-1 11:28:15 | 显示全部楼层
应该是升级到 3.1.2 就解决了吧

本版积分规则