"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué la declaración preparada de PDO no arroja resultados con la consulta LIKE?

¿Por qué la declaración preparada de PDO no arroja resultados con la consulta LIKE?

Publicado el 2024-11-03
Navegar:367

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

Declaración preparada de PDO en PHP: problemas con consultas LIKE de MySQL

La clase PDO de PHP con MySQL ofrece un mecanismo para ejecutar declaraciones SQL con consultas parametrizadas , mejorando la seguridad y el rendimiento. Sin embargo, los usuarios pueden encontrar dificultades al utilizar consultas LIKE.

Problema: la declaración preparada de PDO no devuelve resultados con la consulta LIKE

Al intentar ejecutar una consulta similar a la siguiente usando PDO:

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

Los usuarios pueden encontrar que no se devuelven resultados.

Solución: parametrización correcta

El problema radica en el Parametrización incorrecta del término de búsqueda. En PHP, las declaraciones preparadas utilizan marcadores de posición con nombre, que requieren una sintaxis diferente. La parametrización correcta para la consulta LIKE es:

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

Explicación:

Las declaraciones preparadas separan los datos de la consulta y utilizan marcadores de posición. Por lo tanto, no es necesario encerrar el término de búsqueda entre comillas dobles ni realizar una concatenación de cadenas.

Otros errores comunes:

WHERE hs_text LIKE :searchTerm
$ret = $prep->execute(array(':searchTerm' => '"%'.$searchTerm.'%"'));  // Incorrect
  • Este enfoque es incorrecto ya que agrega comillas dobles innecesarias.
WHERE hs_text LIKE CONCAT(\'%\', ?, \'%\')
$ret = $prep->execute(array($searchTerm));  // Incorrect
  • Usar CONCAT para ajustar el término de búsqueda dentro de la consulta no es necesario para la parametrización.

Al usar la parametrización correcta, puede ejecutar con éxito consultas LIKE usando PDO preparó declaraciones en PHP.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3