Цикл, возвращающий неожиданные результаты - PullRequest
0 голосов
/ 27 августа 2011

Я пытаюсь перебрать набор результатов базы данных, проблема в том, что я знаю, что у меня только одна строка данных, но цикл возвращает 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;
    }

Что я делаю, wroing

1 Ответ

1 голос
/ 27 августа 2011

Это потому, что ваш запрос имеет 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);
}

Если вы хотите, чтобы ваши результаты возвращались в виде массива, как они были ранее, вам нужно будет зациклить результаты и извлечь каждый из них в ключ массива другого массива.Я не могу сделать это здесь, потому что я не вижу ваш класс БД ...

РЕДАКТИРОВАТЬ: Небольшое исправление в приведенном выше коде ...

ДРУГОЕ РЕДАКТИРОВАНИЕ: еще одно исправление ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...