codeigniter之嵌套where子句codeigniter mysql查询

jackei 阅读:53 2024-10-01 17:34:08 评论:0

有什么方法可以嵌套 where 子句吗?例如:

SELECT * FROM table WHERE (colA = 'valueA' AND colB = 'valueB') OR (colA = 'valueC' AND colB = 'valueD') 

我知道我可以将其写入query 函数调用,例如:

$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() 方法使用变体与数组允许您这样做。 在这些情况下,我通常只是将零件构建在一个长字符串中,如下所示: p>

$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_strescape_like_str 手动完成,具体取决于参数预期是什么或什么正在使用的谓词。

如果我在一个使用 Datamapper library 的项目中,我更喜欢在构建此类查询时使用 group_start()group_end() 方法,它们有一个 lot of different flavor其中。

更新

现在,Codeigniter 3 have grouping methods在查询构建器中,因此您可以执行 ->group_start()->group_end()


标签:mysql
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号