buscar

Resumo : neste tutorial, você aprenderá como usar o fetch()método PHP do PDOStatementobjeto para buscar uma linha do conjunto de resultados.

Introdução ao método fetch() do PHP

O fetch()é um método da PDOStatementclasse. O fetch()método permite buscar uma linha de um conjunto de resultados associado a um PDOStatementobjeto.

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 whileloop.

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
): mixedLinguagem de código:  PHP  ( php )

O fetch()método aceita três parâmetros opcionais. O mais importante é o primeiro parâmetro $mode.

O $modeparâ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 coluna
  • PDO::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 $modeparâmetro. Ele retorna falseem 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 do PDOobjeto.
  • 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 bookdbbanco de dados usando o connect.phpscript.

$pdo = require 'connect.php';Linguagem de código:  PHP  ( php )

Segundo, execute uma consulta que selecione book_ide titleda bookstabela:

$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 um PDOStatementobjeto.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *