我正在使用CodeIgniter查询构建器。我想在那里添加having子句。 我的代码如下: (我省略了查询的其他部分):
$this->db->having($filterarray);
我事先建立了filterarray:
$filterarray = array();
if (!empty($filters['interests'])) {
$interestids = $this->interests_model->getAllIdsByDescription($filters['interests']);
$filterarray['interests IN'] = $interestids;
}
我的函数getAllIdsByDescription如下所示:
function getAllIdsByDescription($names){
$res = "(";
$query = $this->db->where_in('description', $names)
->select('interest_id')
->get($this->tableName);
foreach ($query->result() as $interestid) {
$res .= $interestid->interest_id;
$res .= ", ";
}
$res = substr($res, 0, -2);
$res .= ")";
return $res;
}
它将我的查询翻译成以下内容,因此我有一个错误:
HAVING interests IN '(7)'
如何删除(7)周围的引号?
答案 0 :(得分:0)
您可以停用转义功能。
如果您正在使用CodeIgniter转义查询的数据库,那么 可以通过传递可选的第三个参数来防止转义内容, 并将其设置为FALSE。
$this->db->having('user_id', 45); // Produces: HAVING `user_id` = 45
$this->db->having('user_id', 45, FALSE); // Produces: HAVING user_id = 45
当仅将单个数组作为一个参数传递时,不确定如何实现它,但是您需要额外的FALSE参数。
来自http://www.codeigniter.com/user_guide/database/query_builder.html