2013-03-13 39 views
0

我在codeigniter中有一個自定義查詢來計算結果。計數查詢在codeigniter中不起作用

return $this->db->query("SELECT COUNT(*) FROM post WHERE MATCH (title, description)  AGAINST ('+$search_string*' IN BOOLEAN MODE)", NULL, TRUE); 

但是,這隻產生1行,但如果我在phpmyadmin中運行此查詢,那麼它顯示正確的結果。我在做什麼錯?

+0

$ search_string之前的加號是什麼? – Shaolin 2013-03-13 08:48:16

+0

匹配任何含有$ search_string的單詞 – rafi 2013-03-13 08:50:56

+1

是的,它只返回1行是正確的,在該行中,您會找到包含與您的查詢匹配的帖子數量的值。 – Mischa 2013-03-13 08:53:50

回答

3
$q = $this -> db -> query($your_custom_query); 
return $q -> num_rows(); 

這應該爲你工作,但你必須按字段的表或*更換COUNT(*),我會建議一個領域。像說標題。

您查詢不工作,因爲這 - $> DB->查詢resturns和對象需要被轉換爲一個數組,由像foreach ($q->result() as $row) {}成才..

你也可以嘗試return $this -> db -> query($your_custom_query)->result();

+0

仍然相同。不工作。 – rafi 2013-03-13 08:53:08

+1

你用字段名稱替換了COUNT(*)嗎? – Archer 2013-03-13 08:53:57

+0

謝謝! (Y)。這工作!這就是我想知道如何獲得CI的計數值。我只是使用返回$ query-> result()並且它正在工作.......再次感謝! – rafi 2013-03-13 08:56:20

1

這是怎麼算使用CI的Active Record類

$this->db->where('name', $name); 
    $this->db->where('id !=', $artist_id); 
    $this->db->from('artists'); 

    return $this->db->count_all_results(); 
+0

我在這裏使用我的自定義查詢。 – rafi 2013-03-13 08:53:55

+0

我有userd @Archer解決方案。現在可以...無論如何感謝您的幫助。 – rafi 2013-03-13 09:00:11

1

我不認爲這是在query()額外的參數...完成0這裏

但是去thorugh but if i run this query in phpmyadmin then it shows correct results .. 你可以嘗試pritning挖成的最後一個查詢只是爲了檢查它是否正確或不...你可以做到這一點..

$test=$this->db->query("SELECT COUNT(*) FROM post WHERE MATCH (title, description)  AGAINST ('+$search_string*' IN BOOLEAN MODE)"); //no need of other parameters 
echo $this->db->last_query();exit; 

和之後,做出詢問,你必須產生結果...

在yourcase這將是

..

return $this->db->query("SELECT COUNT(*) FROM post WHERE MATCH (title, description)  AGAINST ('+$search_string*' IN BOOLEAN MODE)")->row_array(); 

ways爲generatin g結果

+0

是的,我已經刪除了額外的參數...謝謝! – rafi 2013-03-13 08:59:24

+0

歡迎..快樂編碼.. :) – bipen 2013-03-13 09:01:31

1
$query = $this->db->query("SELECT COUNT(*) as totalCounnt FROM post WHERE 
MATCH (title, description) 
AGAINST ('+$search_string*' IN BOOLEAN MODE)", NULL, TRUE); 

$result = $query->row(); 

return $result->totalCount; 
+0

這是很好的解決方案!謝謝! – rafi 2013-03-13 09:28:33