Вот как я получаю одну запись с 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);