尝试循环遍历数据库结果集,问题是我知道我只有一行数据,但循环返回5行 这是我的模型中的方法
function get_latest_pheeds() {
$data = $this->user_keywords($this->ion_auth->user_id);
$keyword = $data;
$user_id = $this->ion_auth->user_id;
foreach($keyword as $key => $word) {
$q = "SELECT *,COUNT(pheed_comments.comment_id) as comments
FROM pheeds
LEFT JOIN pheed_comments ON pheed_comments.P_id=pheeds.pheed_id
WHERE pheed LIKE '%$word%' OR user_id='$user_id'
GROUP BY pheeds.pheed_id
ORDER BY datetime DESC";
$result = $this->db->query($q);
$rows[] = $result->result();
}
return $rows;
}
我在做什么呢?
答案 0 :(得分:1)
这是因为您的查询有一个OR
,其中应该有一个AND
- 每个查询始终与user_id='$user_id'
匹配。
无论如何,这个循环效率很低,我想你想做更像这样的事情:
function get_latest_pheeds() {
$keywords = $this->user_keywords($this->ion_auth->user_id);
$q = "SELECT *,COUNT(pheed_comments.comment_id) as comments
FROM pheeds
LEFT JOIN pheed_comments ON pheed_comments.P_id=pheeds.pheed_id
WHERE (pheed LIKE '%".implode("%' OR pheed LIKE '%",$keywords)."%') AND user_id='".$this->ion_auth->user_id."'
GROUP BY pheeds.pheed_id
ORDER BY datetime DESC";
return $this->db->query($q);
}
如果您希望将结果作为数组返回,就像之前一样,您需要循环结果并将每个结果提取到另一个数组的数组键中。我不能在这里做,因为我看不到你的db类...
编辑:轻微修复上述代码......
另一个编辑:另一个修复...