You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用CodeIgniter查询构造器编写带AND/OR逻辑的WHERE条件

实现方案

CodeIgniter 查询构造器内置了分组条件方法,可以完美实现带括号的复杂WHERE逻辑,无需手动拼接SQL字符串:

// 对应原SQL的 `b`.`User_Type` = 6 AND `a`.`payment_status` = 2
$this->db->where('b.User_Type', 6);
$this->db->where('a.payment_status', 2);

// 对应原SQL的 OR (`a`.`payment_status` = 1 AND `a`.`approvedStatus` = 2)
$this->db->or_group_start();
$this->db->where('a.payment_status', 1);
$this->db->where('a.approvedStatus', 2);
$this->db->group_end();

说明

  • group_start() / or_group_start() 和 group_end() 是专门用来处理括号分组的方法,两者中间定义的所有查询条件会被自动包裹在一对括号内,同时自动处理逻辑连接符
  • 所有参数会被自动转义,避免了直接拼接SQL带来的SQL注入风险
  • 生成的WHERE语句和你提供的原生拼接SQL逻辑完全一致,执行结果无差异

如果需要更明确的控制条件优先级,也可以把前两个条件也包入独立分组,逻辑完全等价:

$this->db->group_start();
$this->db->where('b.User_Type', 6);
$this->db->where('a.payment_status', 2);
$this->db->group_end();

$this->db->or_group_start();
$this->db->where('a.payment_status', 1);
$this->db->where('a.approvedStatus', 2);
$this->db->group_end();

内容的提问来源于stack exchange,提问作者Er. Anuj Saini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 09:30:05