我在 codeigniter 中有一个自定义查询来计算结果。
return $this->db->query("SELECT COUNT(*) FROM post WHERE MATCH (title, description) AGAINST ('+$search_string*' IN BOOLEAN MODE)", NULL, TRUE);
但这仅生成 1 行,但如果我在 phpmyadmin 中运行此查询,那么它会显示正确的结果。我做错了什么?
我在 codeigniter 中有一个自定义查询来计算结果。
return $this->db->query("SELECT COUNT(*) FROM post WHERE MATCH (title, description) AGAINST ('+$search_string*' IN BOOLEAN MODE)", NULL, TRUE);
但这仅生成 1 行,但如果我在 phpmyadmin 中运行此查询,那么它会显示正确的结果。我做错了什么?
$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();
$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;
我不认为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();
产生结果的方法
这是使用 CI 活动记录类完成计数的方式
$this->db->where('name', $name);
$this->db->where('id !=', $artist_id);
$this->db->from('artists');
return $this->db->count_all_results();