Resumo : neste tutorial, você aprenderá como usar o fetch()
método PHP do PDOStatement
objeto para buscar uma linha do conjunto de resultados.
Introdução ao método fetch() do PHP
O fetch()
é um método da PDOStatement
classe. O fetch()
método permite buscar uma linha de um conjunto de resultados associado a um PDOStatement
objeto.
Internamente, o fetch()
método busca uma única linha de um conjunto de resultados e move o ponteiro interno para a próxima linha no conjunto de resultados. Portanto, a chamada subsequente ao fetch()
método retornará a próxima linha do conjunto de resultados.
Para buscar todas as linhas de um conjunto de resultados, uma por uma, normalmente você usa o fetch()
método em um while
loop.
O seguinte mostra a sintaxe do fetch()
método:
public function fetch(
int $mode = PDO::FETCH_DEFAULT,
int $cursorOrientation = PDO::FETCH_ORI_NEXT,
int $cursorOffset = 0
): mixed
Linguagem de código: PHP ( php )
O fetch()
método aceita três parâmetros opcionais. O mais importante é o primeiro parâmetro $mode.
O $mode
parâmetro determina como fetch()
retorna a próxima linha. O parâmetro $mode 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.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 fetch()
método retorna um valor dependendo do $mode
parâmetro. Ele retorna false
em caso de falha.
Usando o método PHP fetch() com o método query()
Se uma consulta não aceitar um parâmetro, você poderá buscar uma linha do conjunto de resultados da seguinte maneira:
- Primeiro, execute a consulta chamando o
query()
método doPDO
objeto. - Em seguida, busque cada linha do conjunto de resultados usando o
fetch()
método e um loop while:
O exemplo a seguir mostra como usar o fetch()
método para selecionar cada linha da tabela books:
<?php
// connect to the database to get the PDO instance
$pdo = require 'connect.php';
// execute a query
$sql = 'SELECT book_id, title FROM books';
$statement = $pdo->query($sql);
// fetch the next row
while (($row = $statement->fetch(PDO::FETCH_ASSOC)) !== false) {
echo $row['title'] . '<br>';
}
Linguagem de código: PHP ( php )
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 book_id
e title
da books
tabela:
$sql = 'SELECT book_id, title FROM books';
$statement = $pdo->query($sql);
Linguagem de código: PHP ( php )
Terceiro, busque cada linha do conjunto de resultados até que não haja mais linhas para buscar e exiba o título do livro em cada iteração.
while (($row = $statement->fetch(PDO::FETCH_ASSOC)) !== false) {
echo $row['title'] . '<br>';
}
Linguagem de código: PHP ( php )
Usando o método fetch() com uma instrução preparada
Quando uma consulta aceita um ou mais parâmetros, você pode buscar a próxima linha do conjunto de resultados da seguinte maneira:
- Primeiro, execute a instrução preparada .
- Segundo, busque a próxima linha do conjunto de resultados usando o
fetch()
método.
O exemplo a seguir mostra como fetch()
buscar um livro da tabela books com ID de editor 1:
<?php
// connect to the database to get the PDO instance
$pdo = require 'connect.php';
$sql = 'SELECT book_id, title
FROM books
WHERE publisher_id =:publisher_id';
// prepare the query for execution
$statement = $pdo->prepare($sql);
// execute the query
$statement->execute([
':publisher_id' => 1
]);
// fetch the next row
while (($row = $statement->fetch(PDO::FETCH_ASSOC)) !== false) {
echo $row['title'] . PHP_EOL;
}
Linguagem de código: PHP ( php )
Resumo
- Use o
fetch()
método para buscar uma linha do conjunto de resultados associado a umPDOStatement
objeto.