Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
嵌套where子句codeigniter mysql查询_Codeigniter - Fatal编程技术网

嵌套where子句codeigniter mysql查询

嵌套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(

有没有办法嵌套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(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(“…”)
版本要好一点。非常感谢。