2016-09-18 115 views
0

我正在使用CodeIgniter查詢生成器。我想在那裏添加having子句。 我的代碼如下: (我省略了查詢的其他部分):具有IN語句的子句的Codeigniter查詢生成器

$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

'在具有利益 '(7)'' - 這不是一個錯誤。查詢是針對ID的**列表**,這是您在代碼中指定的內容。你真的看到了什麼「錯誤」(或意外行爲)? –

+0

問題在於'(7)'的引號。它通過使用PaulD與FALSE的答案得到解決。 – Dennis

回答

0

您可以禁用轉義。

If you are using a database that CodeIgniter escapes queries for, you can prevent escaping content by passing an optional third argument, and setting it to 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