mysql_escape_string VS mysql_real_escape_string
-
01-10-2019 - |
Question
C'est donc quelque chose que nous devrions tous savoir, et a joué dans mon esprit quand je vu ..
Je sais que mysql_escape_string
est dépréciée de 5,3, mais quelle était la différence réelle dans mysql_real_escape_string
.
Ce que je croyais que mysql_real_escape_string
est exactement le même que mysql_escape_string
à part mysql_real_escape_string
prend un second argument pour la ressource MySQL.
Alors je pensais bien il hargneux doit y avoir une différence quant à la façon dont les chaînes sont gérées car il n'y aurait pas besoin de 2 fonctions.
Alors je pensais que la différence était purement locale et vers le bas pour encodages. ?
Quelqu'un peut-il effacer ce pour moi?
La solution
La différence est que mysql_escape_string
traite simplement la chaîne comme octets bruts, et ajoute échapper où il croit approprié de lui.
mysql_real_escape_string
, d'autre part, utilise les informations sur le jeu de caractères utilisé pour la connexion de MySQL. Cela signifie que la chaîne est échappé tout en traitant des caractères multi-octets correctement; à-dire, il ne sera pas insérer l'échappement des caractères au milieu d'un personnage. C'est la raison pour laquelle vous avez besoin d'une connexion pour mysql_real_escape_string
; il est nécessaire de savoir comment doit être traité de la chaîne.
Cependant, au lieu d'échapper, il est une meilleure idée d'utiliser des requêtes paramétrées de la bibliothèque MySQLi; il a déjà été bugs dans la routine échapper, et il est possible que certains pourraient apparaître à nouveau. PARAMETRAGE la requête est beaucoup, beaucoup plus difficile à gâcher, il est donc moins probable que vous pouvez être compromis par un bug de MySQL.
Autres conseils
Eh bien ... en quelque sorte, oui. Il prend le jeu de caractères de la connexion MySQL en compte.
http://php.net/mysql_escape_string
Cette fonction est identique à l'exception que
mysql_real_escape_string()
mysql_real_escape_string()
prend un gestionnaire de connexion et échappe à la chaîne en fonction du jeu de caractères sélectionné.mysql_escape_string()
ne prend pas un argument de connexion et ne respecte pas le jeu de caractères courant.
mysql_escape_string
n'est pas dépréciée de 5,3 mais, pour 4.3.0 et plus.
Ainsi, toute une en utilisant la version PHP ci-dessus / ou 4.3.0 devrait utiliser mysql_real_escape_string
.
si vous utilisez php < 4.3.0
, que de faire votre magic_quotes_gpc active
de php.ini, mais il est recommandé de mettre à jour, mais si votre code aura problème que vous assurer que vous utilisez, la fonction magic_quotes_gpc
et addslash
plutôt que mysql_escape_string
.
ces deux fonctions sont dépréciées dans
PHP 4> = 4.3.0 et PHP 5. Ils recommandent d'utiliser l'extension de
PDO_MySQL