计数查询在codeigniter中不起作用

时间:2013-03-13 08:44:47

标签: php mysql codeigniter

我在codeigniter中有一个自定义查询来计算结果。

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

但是这只生成了1行,但如果我在phpmyadmin中运行此查询,那么它会显示正确的结果。我在做什么错了?

4 个答案:

答案 0 :(得分:3)

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

这应该适合您,但您必须将 COUNT(*)替换为表格中的任何字段或* ,我建议使用字段。比如说..标题。

您的查询无效,因为$ this-> db->查询还原和需要转换为数组的对象,类似于foreach ($q->result() as $row) {} ..

您也可以尝试 return $this -> db -> query($your_custom_query)->result();

答案 1 :(得分:2)

$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; 

答案 2 :(得分:1)

这是使用CI活动记录类

完成计数的方式
    $this->db->where('name', $name);
    $this->db->where('id !=', $artist_id);
    $this->db->from('artists');

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

答案 3 :(得分:1)

我不认为query() ... docs这里有额外的参数

然而去了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;

在查询完成后,您必须生成结果...

在你的案例中

将是......

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

ways用于生成结果