Ver Mensaje Individual
  #15 (permalink)  
Antiguo 16/01/2014, 13:43
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: ¿Como escapar comillas simples para que no generen errores en consulta?

Cita:
Sé para qué funciona el sprintf pero nunca me había atrevido a utilizarlo dado que cada letra al lado del % cumple determinada función ¿no?


Esa función está descripta en el manual:
Cita:

Un especificador de tipo que indica como que tipo deben ser tratados los datos del argumento. Los tipos posibles son:

% - un caracter de porcentaje literal. No se requiere argumento.
b - el argumento es tratado como un integer y presentado como un número binario.
c - el argumento es tratado como un integer y presentado como el caracter con ese valor ASCII.
d - el argumento es tratado como un integer y presentado como un número decimal (con signo).
e - el argumento es tratado como notación científica (e.g. 1.2e+2). El especificador de precisión indica el número de dígitos después del punto decimal a partir de PHP 5.2.1. En versiones anteriores, se tomó como el número de dígitos significativos (uno menos).
E - como %e pero utiliza la letra mayúscula (e.g. 1.2E+2).
u - el argumento es tratado como un integer y presentado como un número decimal sin signo.
f - el argumento es tratado como un float y presentado como un número de punto flotante (consciente de la configuración regional).
F - el argumento es tratado como un float y presentado como un número de punto flotante (no consciente de la configuración regional). Disponible desde PHP 4.3.10 y PHP 5.0.3.
g - más corto de %e y %f.
G - más corto de %E y %f.
o - el argumento es tratado como un integer y presentado como un número octal.
s - el argumento es tratado y presentado como un string.
x - el argumento es tratado como un integer y presentado como un número hexadecimal (con las letras en minúsculas).
X - el argumento es tratado como un integer y presentado como un número hexadecimal (con las letras en mayúsculas).
El primer ejemplo del mismo manual sería:
Cita:

Ejemplo #1 Intercambio de argumentos
Código PHP:
Ver original
  1. <?php
  2. $num = 5;
  3. $location = 'tree';
  4.  
  5. $format = 'There are %d monkeys in the %s';
  6. echo sprintf($format, $num, $location);
  7. ?>
Esto producirá "There are 5 monkeys in the tree". Pero imaginemos que estamos creando un string de formato en un archivo separado, generalmente por que nos gustaría internacionalizarlo y lo reescribimos así:
El primer ejemplo que te puse era una trampa de Copy+Paste... y copiaste sin revisar si estaba bien escrito, o analizar el codigo en base al manual.
Vuelve a mirarlo y luego corrigelo.

Si quieres la clave, toma este ejemplo y ejecutalo:
Código PHP:
 <?php
$num 
5;
$location "tree's";
$location addslashes($location);

$format "There are %d monkeys in the '%s'";
echo 
sprintf($format$num$location);
?>
Si ves como resulta, entenderás cómo deberías usar el segundo ejemplo que te pasé.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 16/01/2014 a las 13:55