我在codeigniter中有一个自定义查询来计算结果。
return $this->db->query("SELECT COUNT(*) FROM post WHERE MATCH (title, description) AGAINST ('+$search_string*' IN BOOLEAN MODE)", NULL, TRUE);
但是这只生成了1行,但如果我在phpmyadmin中运行此查询,那么它会显示正确的结果。我在做什么错了?
答案 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用于生成结果