Это потому, что ваш запрос имеет 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);
}
Если вы хотите, чтобы ваши результаты возвращались в виде массива, как они были ранее, вам нужно будет зациклить результаты и извлечь каждый из них в ключ массива другого массива.Я не могу сделать это здесь, потому что я не вижу ваш класс БД ...
РЕДАКТИРОВАТЬ: Небольшое исправление в приведенном выше коде ...
ДРУГОЕ РЕДАКТИРОВАНИЕ: еще одно исправление ...