91 votos

¿Cómo puedo crear una consulta con parámetros PDO con una instrucción LIKE?

Aquí está mi intento de:

$query = $database->prepare('SELECT * FROM table WHERE column LIKE "?%"');

$query->execute(array('value'));

while ($results = $query->fetch()) {
  echo $results['column'];
}

117voto

Andrew G. Johnson Puntos 9572

Lo justo después de que publiqué:

$query = $database->prepare('SELECT * FROM table WHERE column LIKE ?');
$query->execute(array('value%'));
while ($results = $query->fetch())
{
    echo $results['column'];
}

66voto

Kzqai Puntos 7484

Para uso Como con % parcial coincidencia también se puede hacer esto: column like concat('%', :something, '%') (en otras palabras, utilizando explícitamente sin escape signos % que definitivamente no son la entrada del usuario) con el nombre de parámetro :something.

Edit: Una sintaxis alternativa que he encontrado es utilizar el operador de concatenación: ||, por lo que se convierten en: where column like '%' || :something || '%' etc

@bobince menciona aquí que:

El dificultad viene cuando se desea permitir que un literal % o _ en el carácter de cadena de búsqueda, sin tener que actuar como un comodín.

Así que es otra cosa a tener en cuenta cuando se combina gusta y parametrización.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X