Los like en SQL y la función sprintf de PHP

Esto más que un fallo es algo de sentido común pero que le puede pasar a cualquiera, supongamos que tienes una consulta:

$query = “select a from b where c like ‘%hola’ and d = ‘34’”;

Imaginemos que hola es una expresión constante entonces podríamos hacer lo siguiente:

$query = “select a from b where c like ‘%hola’ and d = ‘%d”;

$query = sprintf($query,$valor_numerico);

Aquí $query tendría valor vacío porque sprintf interpreta todos los caracteres % como parámetros de la función, lo correcto sería:

$query = “select a from b where c like ‘%s’ and d = ‘%d”;

$query = sprintf($query,”%hola”,$valor_numerico);

Comentarios