PHP - получить массив объектов из результата запроса - PullRequest
1 голос
/ 30 мая 2011

Упрощенная версия задачи:

Итак, у меня есть этот запрос, который находится внутри функции.

$query = "SELECT * FROM users";
$result = mysql_query($query);

Как я хочу использовать mysql_fetch_object (), чтобы получить объект из строки.

Поскольку в конце я хотел получить массив объектов, я делаю это:

while ($a[] = mysql_fetch_object($result)) { // empty here }

В конце функция просто возвращает $ a. И это работает почти нормально.

Моя проблема в том, что mysql_fetch_object вернет в конце NULL "строку" (что нормально, потому что результат закончился, но я все еще назначил его массиву).

Есть идеи, как это сделать прилично? Заранее спасибо.

Ответы [ 4 ]

8 голосов
/ 30 мая 2011

Или вы можете переместить назначение из условия while в тело while, например:

<?php
while ($entry = mysql_fetch_object($result)) {
   $a[] = $entry;
}
3 голосов
/ 30 мая 2011

mysql_fetch_object фактически возвращает FALSE, если строк больше нет.Я бы сделал это:

$a = array();
while (($row = mysql_fetch_object($result)) !== FALSE) {
  $a[] = $row;
}
0 голосов
/ 06 октября 2017

Этот вопрос выглядит как дубликат как извлечь все строки результата в php mysql?

//Database Connection
$sqlConn =  new mysqli($hostname, $username, $password, $database);

//Build SQL String
$sqlString = "SELECT * FROM my_table";

//Execute the query and put data into a result
$result = $this->sqlConn->query($sqlString);

//Copy result into a associative array
$resultArray = $result->fetch_all(MYSQLI_ASSOC);

//Copy result into a numeric array
$resultArray = $result->fetch_all(MYSQLI_NUM);

//Copy result into both a associative and numeric array
$resultArray = $result->fetch_all(MYSQLI_BOTH);
0 голосов
/ 30 мая 2011

Вы можете просто добавить

array_pop($a);

после while

http://php.net/manual/en/function.array-pop.php

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