Codeigniter Query Builder具有IN语句的子句

时间:2016-09-18 12:24:07

标签: php mysql codeigniter query-builder

我正在使用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)周围的引号?

1 个答案:

答案 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