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

如何在CodeIgniter 3中正确编写指定条件的SQL查询?

CodeIgniter 3 正确实现分组WHERE条件

你当前的写法中,or_where会将数组内的条件拆分为OR连接的单个判断,导致生成的SQL逻辑不符合预期。要实现原生SQL中两组AND条件用OR连接的逻辑,需要使用CodeIgniter 3的条件分组功能,用group_start()和group_end()包裹每组AND条件:

正确写法

// 第一组条件:GidenId = 当前用户 AND GelenId = 目标用户
$this->db->group_start();
$this->db->where(["GidenId" => $UserId, "GelenId" => $gelenId]);
$this->db->group_end();

// 用OR连接第二组条件:GelenId = 当前用户 AND GidenId = 目标用户
$this->db->or_group_start();
$this->db->where(["GelenId" => $UserId, "GidenId" => $gelenId]);
$this->db->or_group_end();

// 按Id倒序排序
$this->db->order_by("Id", "DESC");
// 执行查询并获取结果
$vr1 = $this->db->get("chat")->result();

生成的对应SQL

这段代码会生成你需要的原生SQL逻辑(自动完成变量转义,避免SQL注入):

SELECT * FROM chat 
WHERE (GidenId = ? AND GelenId = ?) OR (GelenId = ? AND GidenId = ?) 
ORDER BY Id DESC

内容的提问来源于stack exchange,提问作者Onur ÇİÇEK

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 09:22:44