在使用CI框架的时候, 经常的Active Record 类,这时候会出现一个问题
使用Active Record 类组成的sql 中,为了防止sql注入,会自动的在表名,字段名 自动添加反引号
当然这是极好的,但是有时候会出现一些小问题
预计生成的sql HAVING user_id > 45
$this->db->having('user_id > 45');
官方文档: // 生成: HAVING user_id > 45
实际生成: // 生成: HAVING `user_id > 45`
$this->db->having('user_id>', 45);
实际生成: // 生成: HAVING `user_id>` = 45
可以发现,因为CI会自动添加反引号,导致我的sql 不能达到预期的效果
仔细翻找文档发现
$this->db->select('id',false)中有提到,第二个参数中添加false可以去掉反引号
但并没有说明在Active Record 方法中都适用,于是突发奇想,是不是否可以这样呢
添加第三个参数false,去掉了反引号,达到了预期的sql语句
$this->db->having('user_id >', 45, false);
//生成 :HAVING user_id > 45