Запрос в цикле, как получить массив результатов в Codeigniter - PullRequest
1 голос
/ 08 февраля 2012

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

  $qry = '';
    $qry = "SELECT    
            `user_id`  FROM 
            `view_property_user_lab`";
    $qry .= " WHERE property_id = '" . $propId . "'";
    $result = $this->db->query($qry);
    $result_count = $result->result_array();
    foreach ($result_count as $row)
    {
        $user_name_qry = "SELECT
                                 `name`
                                    FROM USER
                                    WHERE user_id =  '" . $row['user_id'] . "'";
                                   $user_name_result = $this->db->query($user_name_qry);
    }

    $result_count_user = $user_name_result->result_array();
    print_r($result_count_user);

Это дамп массива

 Array ( [0] => Array ( [name] => abc) )

1 Ответ

2 голосов
/ 08 февраля 2012

Я думаю, что ваша проблема в том, что вы используете цикл foreach, но каждый раз, когда вы перезаписываете одну и ту же переменную ($user_name_result), и вы используете только последнюю, назначенную для получения данных из результатаресурс (так как вы называете это вне цикла!).

Но в целом, как сказал Терско в комментариях, выполнение запросов в циклах не очень хорошая вещь (удартвой дб тем больше твоих пользователей увеличится).

Вы можете упростить все с помощью запроса JOINed (однако, просто угадав здесь схему таблицы):

$sql = "SELECT u.name FROM view_property_user_lab AS v JOIN user AS u ON u.user_id = v.user_id WHERE v.property_id = ?";
$query = $this->db->query($sql,array($propID));

print_r($query->result_array());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...