Все ряды из результата в PDO в PHP
Можно сразу получить массив всех
рядов из результата запроса.
Это делается с помощью метода fetchAll.
Давайте рассмотрим различные режимы работы
этого метода.
Все примеры будут для тестовой таблицы.
Получение простого массива
Давайте применим метод fetchAll
для получения простого массива данных.
Для этого оставим параметры метода
пустыми:
<?php
$res = $pdo->query('SELECT * FROM users');
$row = $res->fetchAll();
var_dump($row);
?>
Результат выполнения кода:
[
[
'id' => 1,
'name' => 'name1',
'age' => 21,
'salary' => 500,
],
[
'id' => 2,
'name' => 'name2',
'age' => 22,
'salary' => 600,
],
[
'id' => 3,
'name' => 'name3',
'age' => 23,
'salary' => 600,
],
[
'id' => 4,
'name' => 'name4',
'age' => 24,
'salary' => 700,
],
[
'id' => 5,
'name' => 'name5',
'age' => 25,
'salary' => 800,
],
]
Получение одной колонки
Давайте получим только одну колонку
из таблицы. Для этого передадим в
метод fetchAll параметр
FETCH_COLUMN:
<?php
$res = $pdo->query('SELECT name FROM users');
$row = $res->fetchAll(PDO::FETCH_COLUMN);
var_dump($row);
?>
Результат выполнения кода:
[
'name1',
'name2',
'name3',
'name4',
'name5',
]
Получение пары ключ-значение
Давайте получим данные в виде
пары ключ-значение, где ключом будет айди,
а значением имя юзера. Для этого в параметр
метода fetchAll передадим режим
FETCH_KEY_PAIR:
<?php
$res = $pdo->query('SELECT id, name FROM users');
$row = $res->fetchAll(PDO::FETCH_KEY_PAIR);
var_dump($row);
?>
Результат выполнения кода:
[
1 => 'name1',
2 => 'name2',
3 => 'name3',
4 => 'name4',
5 => 'name5',
]
Получение записей с уникальным полем
Можно сделать так, чтобы уникальное поле (как правило
это id), стало ключом для каждого
подмассива:
<?php
$res = $pdo->query('SELECT * FROM users');
$row = $res->fetchAll(PDO::FETCH_UNIQUE);
var_dump($row);
?>
Результат выполнения кода:
[
1 => [
'id' => 1,
'name' => 'name1',
'age' => 21,
'salary' => 500,
],
2 => [
'id' => 2,
'name' => 'name2',
'age' => 22,
'salary' => 600,
],
3 => [
'id' => 3,
'name' => 'name3',
'age' => 23,
'salary' => 600,
],
4 => [
'id' => 4,
'name' => 'name4',
'age' => 24,
'salary' => 700,
],
5 => [
'id' => 5,
'name' => 'name5',
'age' => 25,
'salary' => 800,
],
]
Практические задачи
Выведите всех пользователей
из таблицы users,
используя описанный в уроке
метод.
Выведите один ряд данных
из таблицы users.
Выведите имя и возраст пользователей в виде пары ключ-значение.