Получить все объекты без цикла в OOP MySQLi

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

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

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

 $result = $db->query("..."); while ($row = $result->fetch_object()) $comments[] = $row; 

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

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

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

Не видя своего 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);