2012-05-16 10 views
9

He intentado usar LIKE dentro de una sentencia preparada, pero php no ejecutará la sentencia debido a un error de sintaxis debido al uso del comodín%.Usando comodines LIKE dentro de pg_prepare

Este es el código

$query = pg_prepare($conn, "MyStatement", 
    'SELECT "Query" from "MyTable" 
    WHERE "Query" LIKE $1% 
    ORDER BY "MyColumn" DESC;'); 

$result = pg_execute($conn, "MyStatement", array($my_param)); 

El caso es que php me muestra una advertencia en la segunda línea alegando un error de sintaxis.

Muchas gracias de antemano !!!

+0

Qué error exacto? – zerkms

+2

No estoy muy familiarizado con postgresql, pero supongo que debe pasar el% en el valor real, no en el enlace. Like array ($ my_param. '%'). – Corbin

+0

Gracias Corbin, de hecho, la solución fue la que proporcionó :) – danielrvt

Respuesta

10

He tenido los mismos parámetros de enlace de problemas con los adaptadores de PDO. La solución es pasar el "%" con la variable:

$query = pg_prepare($conn, "MyStatement", 
'SELECT "Query" from "MyTable" 
WHERE "Query" LIKE $1 
ORDER BY "MyColumn" DESC;'); 

$result = pg_execute($conn, "MyStatement", array($my_param."%")); 

Si necesita

...LIKE '%param%' ... 

Entonces sería su consulta:

$result = pg_execute($conn, "MyStatement", array("%".$my_param."%")); 
+0

Derecha. El error de sintaxis es de cotización. se convierte en 'LIKE' lo que sea '%' en lugar de 'LIKE' lo que sea% ''. Así que sí, pon las comodines en el parámetro, no en la plantilla. –

+0

Gracias por su respuesta chicos! ¡¡¡Me ayudó mucho!!! :) – danielrvt

Cuestiones relacionadas