¿No debería mysql_real_escape_string () dejar barras en la base de datos?
Pregunta
Estoy usando smarty y mysql_real_escape_string ()
para la entrada del usuario,
y cuando inserto algún código con '
o "
, y busco en phpmyadmin
se muestra sin barras invertidas.
Cuando obtengo un registro de DB no tengo barras invertidas también. Pero cuando acabo de pasar una cadena escapada sin insertarla en la base de datos tiene una barra invertida.
Si no agrega barras, inserte con ellas y luego pelarlos cuando saldría? ¿O me estoy perdiendo algo?
Solución
Te lo estás perdiendo: escapar con barras invertidas tiene como objetivo garantizar que las consultas no tengan un formato incorrecto, p. algo como esto seguramente se romperá y posiblemente correrá el riesgo de inyecciones SQL:
insert into table values ('whatever 'this' is')
y nada se guardará en la tabla, mientras que esto:
insert into table values ('whatever \'this\' is')
guardará el valor " sea lo que sea 'esto' es " en la mesa.