Resumo : neste tutorial, você aprenderá como usar o fetchAll()
método PHP do PDOStatement
objeto para retornar um array contendo todas as linhas de um conjunto de resultados.
Introdução ao método fetchAll() do PHP
O fetchAll()
é um método da PDOStatement
classe. O fetchAll()
método permite buscar todas as linhas de um conjunto de resultados associado a um PDOStatement
objeto em um array.
O seguinte mostra a sintaxe do fetchAll()
método:
public function fetchAll(int $mode = PDO::FETCH_DEFAULT): array
Linguagem de código: PHP ( php )
O $mode
parâmetro determina como fetchAll()
retorna a próxima linha. O $mode
parâmetro aceita uma das PDO::FETCH_*
constantes. Os modos mais comumente usados são:
PDO::FETCH_BOTH
– retorna uma matriz indexada pelo nome da coluna e pelo número da coluna indexada em 0. Este é o padrão.PDO::FETCH_ASSOC
– retorna um array indexado pelo nome da colunaPDO::FETCH_CLASS
– retorna uma nova instância de classe mapeando as colunas para as propriedades do objeto.
O fetchAll()
método retorna uma matriz que contém todas as linhas de um conjunto de resultados.
Se o conjunto de resultados estiver vazio, o fetchAll()
método retornará um array vazio. Se fetchAll()
não conseguir buscar dados, ele retornará false
.
É importante observar que se você tiver um conjunto de resultados grande, poderá fetchAll()
consumir muita memória do servidor e possivelmente recursos de rede. Para evitar isso, você deve executar uma consulta que recupere apenas os dados necessários do servidor de banco de dados.
Usando o método PHP fetchAll() com o método query()
Se uma consulta não aceitar um parâmetro, você poderá buscar todas as linhas do conjunto de resultados da seguinte maneira:
- Primeiro, execute a consulta chamando o
query()
método doPDO
objeto. - Em seguida, busque todas as linhas do conjunto de resultados em uma matriz usando o
fetchAll()
método.
O exemplo a seguir ilustra como usar o fetchAll()
método para selecionar todas as linhas da publishers
tabela:
<?php
// connect to the database to get the PDO instance
$pdo = require 'connect.php';
$sql = 'SELECT publisher_id, name
FROM publishers';
// execute a query
$statement = $pdo->query($sql);
// fetch all rows
$publishers = $statement->fetchAll(PDO::FETCH_ASSOC);
// display the publisher name
foreach ($publishers as $publisher) {
echo $publisher['name'] . '<br>';
}
Linguagem de código: PHP ( php )
Saída:
1.McGraw-Hill Education
2.Penguin/Random House
3.Hachette Book Group
4.Harper Collins
5.Simon and Schuster
Linguagem de código: texto simples ( texto simples )
Como funciona.
Primeiro, conecte-se ao bookdb
banco de dados usando o connect.php
script .
$pdo = require 'connect.php';
Linguagem de código: PHP ( php )
Segundo, execute uma consulta que selecione publisher_id
e name
da publishers
tabela:
$sql = 'SELECT publisher_id, name
FROM publishers';
$statement = $pdo->query($sql);
Linguagem de código: PHP ( php )
Terceiro, busque todas as linhas do conjunto de resultados em um array:
// display the publishers
foreach ($publishers as $publisher) {
echo $publisher['name'] . '<br>';
}
Linguagem de código: PHP ( php )
Usando o método fetchAll() com uma instrução preparada
Se uma consulta aceitar um ou mais parâmetros, você poderá:
- Primeiro, execute uma instrução preparada .
- Segundo, busque todas as linhas do conjunto de resultados em uma matriz usando o
fetchAll()
método.
O exemplo a seguir mostra como usar fetchAll()
para buscar todos os editores com ID maior que 2:
<?php
// connect to the database to get the PDO instance
$pdo = require 'connect.php';
$sql = 'SELECT publisher_id, name
FROM publishers
WHERE publisher_id > :publisher_id';
// execute a query
$statement = $pdo->prepare($sql);
$statement->execute([
':publisher_id' => 2
]);
// fetch all rows
$publishers = $statement->fetchAll(PDO::FETCH_ASSOC);
// display the publishers
foreach ($publishers as $publisher) {
echo $publisher['publisher_id'] . '.' . $publisher['name'] . '<br>';
}
Linguagem de código: PHP ( php )
Saída:
3.Hachette Book Group
4.Harper Collins
5.Simon and Schuster
Linguagem de código: texto simples ( texto simples )
Resumo
- Use o
fetchAll()
método para buscar uma linha do conjunto de resultados associado a umPDOStatement
objeto.