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

如何检索course表中program_vss为null或2的指定行数据?

实现course表的多条件查询需求

你的原代码只处理了program_vss为NULL的情况,没法覆盖“program_vss为NULL或等于2”的OR逻辑——因为get_where的数组参数默认用AND连接所有条件,无法直接表达OR分支。可以用以下两种方式解决:

方法一:使用查询构造器的分组条件(推荐,安全防注入)

利用CodeIgniter查询构造器的group_start()和group_end()包裹OR条件,确保逻辑优先级正确:

$this->db->where('is_top_course', 1);
$this->db->where('status', 'active');
// 分组包裹OR条件,确保只作用于program_vss的两个判断
$this->db->group_start();
$this->db->where('program_vss IS NULL');
$this->db->or_where('program_vss', 2);
$this->db->group_end();

return $this->db->get('course');

这段代码生成的SQL为:

SELECT * FROM `course` WHERE `is_top_course` = 1 AND `status` = 'active' AND (`program_vss` IS NULL OR `program_vss` = 2)

方法二:自定义WHERE条件字符串

如果需要更灵活的写法,可直接拼接WHERE语句,同时用参数绑定避免SQL注入:

$this->db->where('is_top_course', 1);
$this->db->where('status', 'active');
$this->db->where('(program_vss IS NULL OR program_vss = ?)', 2);

return $this->db->get('course');

两种方法都能实现需求,优先推荐方法一,它更符合CodeIgniter查询构造器规范,也更易维护。

内容的提问来源于stack exchange,提问作者katbori

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 23:10:28