我对 Code Igniter 的子句有疑问。
我需要生成以下带有活动记录的 SQL:
SELECT *
FROM A
GROUP BY A.X
HAVING A.Y = 'test'
但使用以下代码:
$this->db->select('*');
$this->db->from('A');
$this->db->group_by('A.X');
$this->db->having('A.Y','frontend');
产品:
SELECT *
FROM A
GROUP BY A.X
HAVING A.Y = test
而且似乎不可能转义字符串值...或者是吗?
把having子句写得这么笨拙:
$this->db->having('A.Y = "frontend"', null, false);
我不知道您使用的是哪个版本的CodeIgniter,但问题已经不存在了。
return $this->db
->group_by('X')
->having('Y', 'frontend')
->get('A')
->result();
将构建一个与此类似的渲染 SQL 字符串(带有适当的引用):
SELECT *
FROM `A`
GROUP BY `X`
HAVING `Y` = 'frontend'
having()
方法调用受保护的_wh()
方法,where()
方法系列也使用该方法。 转义/引用过程都始终在那里进行。