Resumo : neste tutorial você aprenderá como usar o PDO para executar uma consulta com o operador LIKE
.
Introdução ao operador SQL LIKE
O operador LIKE
retorna true
se uma sequência de caracteres corresponder a um padrão especificado. Normalmente, um padrão inclui caracteres curinga como:
%
corresponde a qualquer sequência de zero ou mais caracteres_
corresponde a qualquer caractere único.
Por exemplo, %er% corresponderá a qualquer string que contenha a string er
, por exemplo, peter
, understand
, etc.
Normalmente, você usa o operador LIKE
na cláusula WHERE
da instrução SELECT
, UPDATE
e DELETE
.
Execute uma consulta que contenha o operador LIKE no PDO
Para executar uma consulta que contém um operador LIKE
no PDO, você precisa construir o padrão antecipadamente.
Por exemplo, para selecionar o livro com títulos que contenham a string ‘es, primeiro você constrói uma instrução SELECT
como esta:
$sql = 'SELECT book_id, title
FROM books
WHERE title LIKE :pattern';
Linguagem de código: PHP ( php )
E então vincule a string '%es%'
à instrução preparada.
O exemplo a seguir ilustra como executar uma consulta que inclui o operador LIKE:
<?php
/**
* Find books by title based on a pattern
*/
function find_book_by_title(\PDO $pdo, string $keyword): array
{
$pattern = '%' . $keyword . '%';
$sql = 'SELECT book_id, title
FROM books
WHERE title LIKE :pattern';
$statement = $pdo->prepare($sql);
$statement->execute([':pattern' => $pattern]);
return $statement->fetchAll(PDO::FETCH_ASSOC);
}
// connect to the database
$pdo = require 'connect.php';
// find books with the title matches 'es'
$books = find_book_by_title($pdo, 'es');
foreach ($books as $book) {
echo $book['title'] . '<br>';
}
Linguagem de código: PHP ( php )
Como funciona.
A função find_book_by_title()
retorna os livros com o título que corresponde ao arquivo $keyword
.
Primeiro, faça o padrão adicionando os caracteres curinga ao início e ao final do $keyword
:
$pattern = '%' . $keyword . '%';
Linguagem de código: PHP ( php )
Segundo, construa uma instrução SQL que contenha um operador LIKE
na cláusula WHERE
:
$sql = 'SELECT book_id, title
FROM books
WHERE title LIKE :pattern';
Linguagem de código: PHP ( php )
Terceiro, crie uma declaração preparada:
$statement = $pdo->prepare($sql);
Linguagem de código: PHP ( php )
Depois disso, execute a instrução com o valor que vem do padrão:
$statement->execute([':pattern' => $pattern]);
Linguagem de código: PHP ( php )
Finalmente, retorne todas as linhas do conjunto de resultados usando o método fetchAll()
:
return $statement->fetchAll(PDO::FETCH_ASSOC);
Linguagem de código: PHP ( php )
O código a seguir para encontrar livros com o título contém a palavra-chave 'es'
:
// connect to the database
$pdo = require 'connect.php';
// find books with the title matches 'es'
$books = find_book_by_title($pdo, 'es');
foreach ($books as $book) {
echo $book['title'] . '<br>';
}
Linguagem de código: PHP ( php )
Saída:
Marcus Makes a Movie
Box of Butterflies
Linguagem de código: PHP ( php )
Resumo
- Construa um padrão antes de passá-lo para uma instrução preparada que inclua o operador
LIKE
.