Todos os registros do resultado no PDO em PHP
É possível obter imediatamente um array com todos
os registros do resultado de uma consulta.
Isso é feito usando o método fetchAll.
Vamos analisar os vários modos de funcionamento
deste método.
Todos os exemplos serão para a tabela de teste.
Obtendo um array simples
Vamos aplicar o método fetchAll
para obter um array simples de dados.
Para isso, deixaremos os parâmetros do método
vazios:
<?php
$res = $pdo->query('SELECT * FROM users');
$row = $res->fetchAll();
var_dump($row);
?>
Resultado da execução do código:
[
[
'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,
],
]
Obtendo uma única coluna
Vamos obter apenas uma coluna
da tabela. Para isso, passaremos para o
método fetchAll o parâmetro
FETCH_COLUMN:
<?php
$res = $pdo->query('SELECT name FROM users');
$row = $res->fetchAll(PDO::FETCH_COLUMN);
var_dump($row);
?>
Resultado da execução do código:
[
'name1',
'name2',
'name3',
'name4',
'name5',
]
Obtendo par chave-valor
Vamos obter os dados na forma de
par chave-valor, onde a chave será o id,
e o valor será o nome do usuário. Para isso, no parâmetro
do método fetchAll passaremos o modo
FETCH_KEY_PAIR:
<?php
$res = $pdo->query('SELECT id, name FROM users');
$row = $res->fetchAll(PDO::FETCH_KEY_PAIR);
var_dump($row);
?>
Resultado da execução do código:
[
1 => 'name1',
2 => 'name2',
3 => 'name3',
4 => 'name4',
5 => 'name5',
]
Obtendo registros com um campo único
Pode-se fazer com que um campo único (geralmente
o id) se torne a chave para cada
subarray:
<?php
$res = $pdo->query('SELECT * FROM users');
$row = $res->fetchAll(PDO::FETCH_UNIQUE);
var_dump($row);
?>
Resultado da execução do código:
[
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,
],
]
Exercícios práticos
Exiba todos os usuários
da tabela users,
usando o método descrito na lição.
Exiba um único registro de dados
da tabela users.
Exiba o nome e a idade dos usuários na forma de par chave-valor.