sirve que para mysql_real_escape_string escape php

que - replace php



¿Cuál es la diferencia entre mysql_real_escape_string y addslashes? (5)

string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier ] )
mysql_real_escape_string() llama a la función de biblioteca de MySQL mysql_real_escape_string, que antepone barras diagonales inversas a los siguientes caracteres: / x00, / n, / r, /, '', "y / x1a.

string addslashes ( string $str )
Devuelve una cadena con barras diagonales inversas antes de los caracteres que deben citarse en las consultas de la base de datos, etc. Estos caracteres son comillas simples (''), comillas dobles ("), barras invertidas (/) y NUL (el byte NULO).

Afectan a diferentes personajes. mysql_real_escape_string es específico de MySQL. Addlaslas es solo una función general que puede aplicarse a otras cosas, así como a MySQL.

mysql_real_escape_string y addslashes se usan para escapar de los datos antes de la consulta de la base de datos, ¿cuál es la diferencia? (Esta pregunta no se trata de consultas parametrizadas / PDO / mysqli)


Parece que mysql_real_escape_string es binario-seguro - la documentación dice:

Si se van a insertar datos binarios, se debe usar esta función.

Creo que probablemente sea más seguro usar siempre mysql_real_escape_string que addslashes.


mysql_real_escape_string debe usarse cuando está recibiendo datos binarios, addslashes es para ingresar texto.

Puedes ver las diferencias aquí: mysql-real-escape-string y addslashes


caso 1:

$str = "input''s data"; print mysql_real_escape_string($str); input/'s data print addslashes($str); input/'s data;

caso 2:

$str = "input/'s data"; print mysql_real_escape_string($str); input/'s data print addslashes($str); input//'s data;


mysql_real_escape_string() tiene la ventaja adicional de evitar el ingreso de texto correctamente con respecto al conjunto de caracteres de una base de datos a través del parámetro link_identifier opcional.

La percepción del conjunto de caracteres es una distinción crítica. addslashes() agregará una barra antes de cada representación binaria de ocho bits de cada carácter que se escapará.

Si está utilizando algún tipo de conjunto de caracteres multibyte es posible, aunque probablemente solo por un diseño deficiente del juego de caracteres, que una o ambas mitades de una representación de caracteres de dieciséis o treinta y dos bits sea idéntica a los ocho bits de un carácter addslashes() agregaría una barra inclinada a.

En tales casos, es posible que se agregue una barra antes de que se escape un carácter o, lo que es peor, es posible que reciba una barra en medio de un carácter de dieciséis (o treinta y dos) bits que corrompería los datos.

Si necesita escapar del contenido de las consultas de la base de datos, siempre debe usar mysql_real_escape_string() siempre que sea posible. addslashes() está bien si está seguro de que la base de datos o la tabla está utilizando solo la codificación ASCII de 7 u 8 bits.