"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que a instrução preparada pelo PDO não retorna resultados com a consulta LIKE?

Por que a instrução preparada pelo PDO não retorna resultados com a consulta LIKE?

Publicado em 2024-11-03
Navegar:679

Why Does PDO Prepared Statement Fail to Return Results with LIKE Query?

Instrução preparada PDO em PHP: problemas com consultas LIKE do MySQL

A classe PDO do PHP com MySQL oferece um mecanismo para executar instruções SQL com consultas parametrizadas , melhorando a segurança e o desempenho. No entanto, os usuários podem encontrar dificuldades ao usar consultas LIKE.

Problema: a instrução preparada do PDO não retorna resultados com a consulta LIKE

Ao tentar executar uma consulta semelhante à seguinte usando DOP:

SELECT *
FROM hs
WHERE hs_text LIKE "%searchTerm%"

Os usuários podem descobrir que nenhum resultado é retornado.

Solução: parametrização correta

O problema está no parametrização incorreta do termo de pesquisa. Em PHP, as instruções preparadas usam espaços reservados nomeados, que requerem sintaxe diferente. A parametrização correta para a consulta LIKE é:

$prep = $dbh->prepare($sql);
$ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));

Explicação:

As instruções preparadas separam os dados da consulta e usam espaços reservados. Portanto, não é necessário colocar o termo de pesquisa entre aspas duplas ou realizar concatenação de strings.

Outros erros comuns:

WHERE hs_text LIKE :searchTerm
$ret = $prep->execute(array(':searchTerm' => '"%'.$searchTerm.'%"'));  // Incorrect
  • Esta abordagem está incorreta, pois adiciona aspas duplas desnecessárias.
WHERE hs_text LIKE CONCAT(\'%\', ?, \'%\')
$ret = $prep->execute(array($searchTerm));  // Incorrect
  • Usar CONCAT para agrupar o termo de pesquisa dentro da consulta não é necessário para a parametrização.

Ao usar a parametrização correta, você pode executar consultas LIKE com sucesso usando Instruções preparadas pelo DOP em PHP.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3