Возвращать массив объектов из запроса? - PullRequest
0 голосов
/ 05 февраля 2012

Мне нужна функция для возврата массива сервисов, каждый из которых содержит id и name . Я искал в документации MySQL, но не могу проверить, существует ли более разумное решение, чем это:

function getServices() {
    $services = array();

    $stmt = $this->db->prepare('SELECT id, name FROM services WHERE client_id=?');
    $stmt->bind_param("i", $this->clientId);
    $stmt->execute();
    $stmt->bind_result($id, $name);
    while ($stmt->fetch()) {
        $service = array();
        $service['id'] = $id;
        $service['name'] = $name;
        $services[] = $service;
    }
    $stmt->close();

    return $services;
}

Кажется немного громоздким, что я должен сам построить получившийся массив. Есть ли способ позволить mysql построить массив, используя выбранные столбцы?

Ответы [ 2 ]

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

Я не использую mysqli, но из проверяя документы , я считаю, что это должно работать:

$stmt = $this->db->prepare('SELECT id, name FROM services WHERE client_id=?');
$stmt->bind_param("i", $this->clientId);
$stmt->execute();

$result   = $stmt->get_result();
$services = $result->fetch_all( MYSQLI_ASSOC );

$stmt->close();

return $services;

Таким образом, используя:
1. mysqli_stmt:: get_result ()
2. mysqli_result :: fetch_all ()

Это для PHP> = 5.3.0.

1 голос
/ 05 февраля 2012

Переключитесь на PDO, и у вас есть возможность

PDOStatement :: fetchAll ()

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