CI where多重条件查询
表字段 uid,name, tags,status
这里需要用到name和tags的模糊查询
status的查询
$this->db->where('uid ', '1');
$this->db->or_where('status', '5');
$this->db->like('name', 'na');
$this->db->or_like('tag', 'na');
这样的sql是
where uid=1 and status=5 and ( name like '%na%' ortag like '%na%' )
只是这两个条件的话,没有问题.但如果加多了一个and的条件,这种写法就不行了,如
$this->db->where('uid ', '1');
$this->db->where('status', '1');
$this->db->or_where('status', '5');
$this->db->like('name', 'na');
$this->db->or_like('tag', 'na');
这样构成的sql语句是
where uid=1 and status=1 or status=5 and ( name like '%na%' ortag like '%na%' )
这样查询sql 自动识别成了 where (uid=1 and status=1) or status=5 and ( name like '%na%' ortag like '%na%' )
会查出 库里status=5的值 uid判断就失去作用
想要的到的结果应该是
where uid=1 and (status=1 or status=5)and ( name like '%na%' ortag like '%na%' )
框架里 也没又发现什么方法能够解决
至于这个问题并不清楚怎么做
但是可能你可以优化一下查询
uid从命名来看应该是一个唯一的吧,那就没必要带后面那么多条件了
自己把uid=1的查出来,用php来判断其他条件吧 楼主这个问题解决了没?今天也遇到,大家共同开发项目,也不能贸然修改CI数据库代码?求解 可以用查询条件组啊~
http://codeigniter.org.cn/user_guide/database/query_builder.html#id7 coolhpy 发表于 2015-8-24 11:27
**** 作者被禁止或删除 内容自动屏蔽 ****
你好,3.0好像才有查询条件组,我的项目用的是2.0,有什么解决方法吗 一叶倾心 发表于 2015-12-29 17:01
你好,3.0好像才有查询条件组,我的项目用的是2.0,有什么解决方法吗
复杂的查询直接写SQL语句还方便 是啊。如果不写条件组,还不好实现。 好二啊,where和or_where配对,like和or_like配对。where和or_like,却不能配对成功。 可以自己写sql。然后调用框架的 $query = $db->query($sql);也可以达到效果。自己写sql可以想与就与,想或就或。只是看起来不怎么舒服。 我这儿直接报Message: Call to a member function result_array() on a non-object 这个错误
页:
[1]