2010-10-25 13 views
5

Para hacer una búsqueda LIKE con PDO, necesito agregar el % al parámetro antes de pasarlo.¿Cómo hacer LIKE buscar con PDO?

Esto funciona:

$qry = ' 
    SELECT product_id 
    FROM cart_product 
    WHERE product_manufacturer_num LIKE :search_string 
'; 
$sth = $this->pdo->prepare($qry); 
$sth->execute(array("search_string"=>'%'.$search_string.'%')); 

Para mí esto se siente más como un truco, ¿Hay una manera más oficial de hacer esto?

+0

Duplicado de: http://stackoverflow.com/questions/583336/how-do-i-create-a-pdo-parameterized-query-with-a-like-statement-in-php/7357296#7357296 – Kzqai

Respuesta

4

Está bien. No se siente como un truco para mí.

El difficulty aparece cuando desea permitir un carácter literal % o _ en la cadena de búsqueda, sin que actúe como un comodín.

+0

Pensé que una gran parte de los parámetros de enlace era para PDO/SQL para escapar cosas como% o _ para ti ... Así que estoy confundido. – RonLugge

+1

@RonLugge: PDO hace el escape/parametrización necesaria para obtener literales de cadena en la base de datos. El problema es que la sintaxis del patrón 'LIKE' es una capa separada, además de los literales de cadenas SQL. MySQL confunde el problema al usar el mismo carácter de escape para ambas capas, pero están conceptualmente desconectados, implementados a niveles completamente diferentes. – bobince

Cuestiones relacionadas