una optimizar optimización lentas lenta datos consultas consulta como bases avanzadas agilizar php mysql pdo sql-like

php - optimización - optimizar consultas sql



implementar la consulta LIKE en PDO (5)

Debe incluir los signos % en los $params , no en la consulta:

$query = "SELECT * FROM tbl WHERE address LIKE ? OR address LIKE ?"; $params = array("%$var1%", "%$var2%"); $stmt = $handle->prepare($query); $stmt->execute($params);

Si mira la consulta generada en su código anterior, verá algo como SELECT * FROM tbl WHERE address LIKE ''%"foo"%'' OR address LIKE ''%"bar"%'' , porque la instrucción preparada es citando sus valores dentro de una cadena ya citada.

Estoy teniendo problemas para implementar LIKE en PDO

Tengo esta consulta:

$query = "SELECT * FROM tbl WHERE address LIKE ''%?%'' OR address LIKE ''%?%''"; $params = array($var1, $var2); $stmt = $handle->prepare($query); $stmt->execute($params);

Comprobé $var1 y $var2 que contienen tanto las palabras que quiero buscar, mi PDO está funcionando bien ya que algunas de mis consultas SELECT INSERT funcionan, es solo que no estoy familiarizado con LIKE aquí en PDO.

El resultado no se devuelve. ¿Mi $query es sintácticamente correcta?


No, no es necesario que cites preparar marcadores de posición. Además, incluya el% de las marcas dentro de sus variables.

LIKE ?

Y en la variable: %string%


Puedes ver abajo el ejemplo

$title = ''PHP%''; $author = ''Bobi%''; // query $sql = "SELECT * FROM books WHERE title like ? AND author like ? "; $q = $conn->prepare($sql); $q->execute(array($title,$author));

Espero que funcione


Simplemente use lo siguiente:

$query = "SELECT * FROM tbl WHERE address LIKE CONCAT(''%'', :var1, ''%'') OR address LIKE CONCAT(''%'', :var2, ''%'')"; $ar_val = array('':var1''=>$var1, '':var2''=>$var2); if($sqlprep->execute($ar_val)) { ... }


$query = "SELECT * FROM tbl WHERE address LIKE ? OR address LIKE ?"; $params = array("%$var1%", "%$var2%"); $stmt = $handle->prepare($query); $stmt->execute($params);