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
WHERE hs_text LIKE CONCAT(\'%\', ?, \'%\')
$ret = $prep->execute(array($searchTerm)); // Incorrect
Ao usar a parametrização correta, você pode executar consultas LIKE com sucesso usando Instruções preparadas pelo DOP em PHP.
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