如何在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
相关产品推荐
相关产品推荐

