嵌套where子句codeigniter mysql查询
有没有办法嵌套where子句?e、 g:嵌套where子句codeigniter mysql查询,codeigniter,Codeigniter,有没有办法嵌套where子句?e、 g: SELECT * FROM table WHERE (colA = 'valueA' AND colB = 'valueB') OR (colA = 'valueC' AND colB = 'valueD') 我知道我可以将其写入查询函数调用,例如: $this->db->query("SELECT ...") 但我想知道在codeigniter中是否有一种“适当”的方法来实现这一点,例如: $this->db->where(
SELECT * FROM table WHERE (colA = 'valueA' AND colB = 'valueB') OR (colA = 'valueC' AND colB = 'valueD')
我知道我可以将其写入查询
函数调用,例如:
$this->db->query("SELECT ...")
但我想知道在codeigniter中是否有一种“适当”的方法来实现这一点,例如:
$this->db->where(array('colA'=>'valueA'), array('colB'=>valueB'))->or_where(array('colA'=>'valueC'), array('colB'=>'valueD'))
感谢使用codeigniter 3,现在有了,请参阅更新
在数组中没有
where()
方法用法变量允许您这样做。在这些情况下,我通常只在一个长字符串中构建部件,如下所示:
$this->db->where("
(
(colA = '".$this->db->escape($v0)."' and colB = '".$this->db->escape($v1)."')
or
(colA = '".$this->db->escape($v2)."' and colB = '".$this->db->escape($v3)."')
)
");
转义可以通过escape
(执行一些自动检测)或escape\u str
或escape\u like\u str
手动完成,具体取决于预期的参数或使用的谓词
如果我在一个使用的项目中,我更喜欢使用group\u start()
和group\u end()
方法来构建此类查询,它们有很多这样的方法
更新
现在,使用查询生成器中的Codeigniter 3,您可以执行->group_start()
s和->group_end()
s。您也可以像这样尝试
$this->db->where(condition1);
$this->db->or_where(condition2);
啊,谢谢你!:)这比使用$this->db->query(“…”)
版本要好一点。非常感谢。