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 表单验证启用查询生成器?