que - mysql_real_escape_string php 7
mysql_escape_string VS mysql_real_escape_string (4)
Así que esto es algo que todos deberíamos saber y jugamos en mi mente cuando lo vi por primera vez ...
Sé que mysql_escape_string
está en desuso de 5.3, pero cuál fue la diferencia real en mysql_real_escape_string
.
Lo que pensé era que mysql_real_escape_string
es exactamente igual que mysql_escape_string
aparte de mysql_real_escape_string
toma un segundo argumento para el recurso mysql.
así que entonces pensé con seguridad que debe haber alguna diferencia en cuanto a cómo se manejan las cadenas porque no habría necesidad de 2 funciones.
Entonces, pensé que la diferencia se debía exclusivamente a la codificación local y de caracteres. ?
Alguien puede aclarar esto para mí ?
Ahora ambas de estas funciones están en desuso en
PHP 4> = 4.3.0 y PHP 5. Recomiendan usar la extensión
PDO_MySQL
Bueno ... más o menos, sí. Tiene en cuenta el conjunto de caracteres de la conexión MySQL.
http://php.net/mysql_escape_string
Esta función es idéntica a
mysql_real_escape_string()
excepto quemysql_real_escape_string()
toma un controlador de conexión y escapa de la cadena de acuerdo con el conjunto de caracteres actual.mysql_escape_string()
no toma un argumento de conexión y no respeta la configuración del conjunto de caracteres actual.
La diferencia es que mysql_escape_string
simplemente trata la cadena como bytes sin procesar, y agrega un escape donde cree que es apropiado.
mysql_real_escape_string
, por otro lado, utiliza la información sobre el conjunto de caracteres utilizado para la conexión MySQL. Esto significa que la cadena se escapa al tratar correctamente los caracteres de varios bytes; es decir, no insertará caracteres de escape en medio de un personaje. Es por esto que necesita una conexión para mysql_real_escape_string
; Es necesario para saber cómo debe tratarse la cuerda.
Sin embargo, en lugar de escapar, es una mejor idea utilizar consultas parametrizadas de la biblioteca MySQLi; previamente ha habido errores en la rutina de escape, y es posible que algunos aparezcan nuevamente. Parametrizar la consulta es mucho más difícil de desordenar, por lo que es menos probable que pueda verse comprometido por un error de MySQL.
mysql_escape_string
no está en desuso desde 5.3 pero, para 4.3.0 y superior. Entonces, cualquiera que use una versión de PHP por encima de / o 4.3.0 debe usar mysql_real_escape_string
.
Si usa php < 4.3.0
, magic_quotes_gpc active
desde php.ini, aunque se recomienda actualizar, pero si su código tendrá un problema, asegúrese de usar magic_quotes_gpc
y la función addslash
lugar de mysql_escape_string
.