Codeigniter - 在查询生成器的“来自”函数中停止转义

Posted

技术标签:

【中文标题】Codeigniter - 在查询生成器的“来自”函数中停止转义【英文标题】:Codeigniter - Stop escape in function "from" of Query Builder 【发布时间】:2015-09-30 12:50:52 【问题描述】:

我对 Codeigniter 3.0 中查询生成器的转义方式有疑问。 比如这段代码

echo $this->db->select('ROUND(3.456, 1) AS T1')->get_compiled_select();

返回:

SELECT ROUND(3.456, `1)` AS `T1`

该函数在昏迷后放置反引号,但这可以通过将第二个参数设置为 FALSE 来解决。但是“from”函数总是反引号:

echo $this->nm->db->from('(SELECT ROUND(3.456, 1)) AS T1')->get_compiled_select()

返回:

SELECT * FROM (SELECT ROUND(3.456, `1))` AS `T1`

我正在使用 Codeigniter 3.0。这个问题从 Codeigniter 2.2 开始就存在。我需要使用查询生成器,因为它很容易使用,但是它的转义方法很麻烦。如何停止函数中的转义?

谢谢。

【问题讨论】:

【参考方案1】:

我找到了一个解决方案,但我不确定使用它。在“database.php”文件中应该为数据库连接的配置数组添加一个新元素。

$db['default']['_protect_identifiers'] = FALSE;

该代码禁用了转义模式。但这是可取的吗?禁用转义系统有什么风险?

谢谢。

【讨论】:

或者您可以在当前查询上禁用并再次启用它,而不是在整个应用程序上【参考方案2】:

或者您可以在当前查询上禁用并再次启用它,而不是在整个应用程序上。查询前插入

$this->db->_protect_identifiers = FALSE;

查询后,设置为TRUE再次启用。

【讨论】:

以上是关于Codeigniter - 在查询生成器的“来自”函数中停止转义的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CodeIgniter 中为 is_unique 表单验证启用查询生成器?

Codeigniter:显示来自活动记录的SQL查询

查询生成器 Codeigniter 3

非英语不支持来自 $.post jquery codeigniter 的 mysql 查询

codeigniter 活动记录,生成,但不执行查询

Codeigniter 将查询组合在一个循环中