我在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
答案 0 :(得分:0)
您需要覆盖$_reserved_identifiers
类中的CI_DB_driver
变量,如下所示
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
另一个选项是使用>=
和<=