答案 0 :(得分:3)
您在提供的链接中实际解释过:
如果您正在使用CodeIgniter转义查询的数据库,那么 可以通过传递可选的第三个参数来防止转义内容, 并将其设置为FALSE。
这意味着;例如MySQL受支持,它将逃脱:
$this->db->having('user_id', 45); // Produces: HAVING `user_id` = 45 in some databases such as MySQL
禁用它:
$this->db->having('user_id', 45, FALSE); // Produces: HAVING user_id = 45
但你的问题是什么时候使用FALSE
论证吧?那么,让我给你一个使用来自the old documentation的FALSE
参数的场景:
$this->db->select('(SELECT SUM(payments.amount) FROM payments WHERE payments.invoice_id=4') AS amount_paid', FALSE);
如果您需要复合选择语句,则此(FALSE)非常有用。
如果没有FALSE
,它将产生:
SELECT `(SELECT SUM(payments.amount) FROM payments WHERE payments.invoice_id=4`
但FALSE
:
SELECT (SELECT SUM(payments.amount) FROM payments WHERE payments.invoice_id=4
并且所需的案例是最后一个案例。使用FALSE
只是删除反引号(`)。
这种用法是首选,因为它的写作很实用,但我不推荐它,因为它令人困惑。
我更喜欢这样写:
<?php
.
.
$whatever_query = $this->db->get_compiled_select();
$query = $this->db->query('SELECT (SELECT SUM(payments.amount) FROM payments WHERE payments.invoice_id=4 '.$whatever_query);
?>
但是有些人更喜欢使用:$this->db->select()
这就是为什么会有FALSE
参数。
顺便说一下,它不是$this->db->select()
特定问题。在调用其他查询构建器函数时,可能有许多情况需要使用FALSE
参数。但是这种情况的常见关键字可能是复合语句。