Получить все объекты без цикла в ООП MySQLi - PullRequest
5 голосов
/ 06 января 2012

Вот как я получаю одну запись с MySQLi:

$result = $db->query("...");
$image = $result->fetch_object();

Теперь мне нужно получить комментарии и передать их на просмотр. Я делаю это прямо сейчас, но это не так:

$result = $db->query("...");

while ($row = $result->fetch_object())
    $comments[] = $row;

Мне интересно, есть ли способ удалить петлю? Что-то вроде есть $ image = $ result-> fetch_object (((s))), поэтому мой код будет выглядеть так:

$result = $db->query("...");
$comments = $result->fetch_objects();

Ответы [ 2 ]

4 голосов
/ 31 января 2012

Да.Класс mysqli_result предоставляет метод fetch_all для этого.Однако этот метод будет возвращать только ассоциативные или числовые массивы (или гибрид), а не объекты.

1 голос
/ 31 января 2012

Не видя ваш SQL, сложно сказать.Там может быть лучший запрос, который вы могли бы использовать.Опубликуйте ваш SQL, и я посмотрю по-другому.

С точки зрения вашего SQL-запроса, если ваш запрос возвращает несколько строк, вы уже извлекли их с помощью одного вызова db.

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

function get_all_rows_as_array(&$result)
{
    foreach($result as mysql_fetch_assoc($result))
    {
        $array[] = $row;
    }

    return $array;
}

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