2011-01-19 13 views

Respuesta

6

addslashes es el equivalente aproximado de str_replace($str, "'", "\\'"). Puede omitirlo trivialmente con cualquier cantidad de secuencias de unicode que se evalúen hasta ' en mysql, pero se ven completamente diferentes a addslashes().

Mysql_real_escape_String() Por otro lado, utiliza la función de escape mysql interno real, que sabe exactamente qué buscar y reparar para que sea "seguro" para mysql. Lo que funciona para mysql puede no funcionar para otra base de datos, ya que cada uno tiene una semántica y requisitos de escape ligeramente diferentes, pero si está trabajando con mysql, entonces la "cadena de escape real" es el camino a seguir.

+0

pero, por otro lado, no se pueden usar eliminaciones con mysql_real_escape_String, ¿o sí? He tenido algunas veces donde necesito eliminar barras desde una entrada de la base de datos – blake305

+1

Si se almacenaron cosas guardadas, entonces tienes un error lógico en alguna parte. Pero no, lo más probable es que las eliminaciones eliminen, pero no se garantiza, la "cadena de escape real". Podría funcionar en pruebas simples, pero lo más probable es que te queme más tarde. –

0

Y todavía es posible si se agregan los datos no cotizados a una tabla, es decir

SELECT * FROM tbl WHERE id = 10 

Aquí quiere asegurarse de que esta identificación es exactamente un dígito

$id = intval($_GET[ 'id' ]) ; 
$query = "SELECT * FROM tbl WHERE id = {$id}" ; 
$result = mysql_query($query) ; 
// ... bla-bla 
1

Esto es lo que sucede cuando solo agrega barras en un lenguaje que entiende codificaciones Unicode (o mezcla codificaciones al enviar la consulta): http://bugs.mysql.com/bug.php?id=22243

Básicamente es más seguro saber qué t La base de datos espera en términos de codificación: de esta forma no terminarás escapando de la mitad del personaje por accidente, o dejando sin protección a la parte posterior de un personaje.