codeigniter 左连接不换行

Posted

技术标签:

【中文标题】codeigniter 左连接不换行【英文标题】:codeigniter left join without wrapping character 【发布时间】:2015-05-12 07:50:59 【问题描述】:

我在 Codeigniter 中生成查询时遇到问题。问题是

$this->db->select('user.*')
    ->join('user_group', 'user.group_id BETWEEN user_group.start_range AND user_group.end_range', 'left');

此代码生成以下查询:

SELECT `user`.* FROM (`user`) LEFT JOIN `user_group` ON `user`.`group_id` `BETWEEN` user_group.start_range AND user_group.end_range

这里,mysql无法识别引号字符内的BETWEEN,如何在不使用引号字符换行的情况下生成查询。请给我任何建议。

我正在使用 codeigniter 2.2.0

【问题讨论】:

您需要使用 >= 和 db->select('user.*' ) ->join('user_group', 'user.group_id >= user_group.start_range AND user.group_id 好吧,CI 2.2.x 没有转义标志作为连接的第四个参数(用于转义值和标识符),而在 CI 3.0 中,它有。因此,如果您使用 CI 2.2.0,则需要遵循 imran qasim 的建议! 感谢您的帮助,imran qasim 提供的解决方案工作正常 【参考方案1】:

您需要覆盖CI_DB_driver 类中的$_reserved_identifiers 变量,使其如下所示

var $_reserved_identifiers  = array('*', 'BETWEEN'); // Identifiers that should NOT be escaped

(注意我不确定这是否会降低安全性)

https://github.com/bcit-ci/CodeIgniter/blob/2.2-stable/system/database/DB_driver.php#L67

另一个选项是使用 >=<= 复制 between 运算符

【讨论】:

以上是关于codeigniter 左连接不换行的主要内容,如果未能解决你的问题,请参考以下文章

notepad粘贴多列不换行

编程规范

codeigniter 活动记录左连接

flex 布局换行后最后一行左对齐

如何根据codeigniter中的时间戳获取数据?

css强制不换行问题?