调用 CodeIgniter 的having()方法时不应用值引用

问题描述 投票:0回答:2

我对 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

而且似乎不可能转义字符串值...或者是吗?

php codeigniter activerecord query-builder having
2个回答
1
投票

把having子句写得这么笨拙:

$this->db->having('A.Y = "frontend"', null, false);

0
投票

我不知道您使用的是哪个版本的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()
方法系列也使用该方法。 转义/引用过程都始终在那里进行。

© www.soinside.com 2019 - 2024. All rights reserved.