0

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

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

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

4

4 回答 4

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

这应该对你有用,但你必须用表中的任何字段或 * 替换 COUNT(*),我建议一个字段。就像说..标题。

您的查询不起作用,因为 $this->db->query 返回了需要转换为数组的对象,例如foreach ($q->result() as $row) {}..

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

于 2013-03-13T08:48:59.390 回答
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; 
于 2013-03-13T09:18:27.803 回答
1

我不认为query()... docs here中有额外的参数

但是but if i run this query in phpmyadmin then it shows correct results通过..您可以尝试打印最后一个查询以检查它是否正确...您可以通过..

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

产生结果的方法

于 2013-03-13T08:57:17.830 回答
1

这是使用 CI 活动记录类完成计数的方式

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

    return $this->db->count_all_results();
于 2013-03-13T08:51:04.133 回答