55 votes

mysql_escape_string VS mysql_real_escape_string

Donc, c'est quelque chose que nous devrions tous connaître, et joué sur mon esprit quand j'ai vu ça..

Je sais qu' mysql_escape_string est déconseillé de 5,3 mais quelle est la réelle différence en mysql_real_escape_string.

Ce que j'ai pensé qu' mysql_real_escape_string est exactement le même qu' mysql_escape_string part mysql_real_escape_string prend un deuxième argument en faveur de la base de ressources.

alors j'ai pensé que bien hargneux il doit y avoir une différence quant à la façon dont les chaînes sont manipulés car il n'y aurait pas un besoin pour les 2 fonctions.

Alors j'ai pensé que la différence est purement bas à locale et les encodages de caractères. ?

quelqu'un peut-il éclaircir ce point pour moi ?

88voto

Michael Madsen Points 30610

La différence est que, mysql_escape_string seulement traite la chaîne comme raw octets, et ajoute de s'échapper s'il estime que cela est approprié.

mysql_real_escape_string, d'autre part, utilise les informations sur le jeu de caractères utilisé pour la connexion MySQL. Cela signifie que la chaîne est échappé lors d'un traitement de caractères multi-octets correctement; c'est à dire, il ne l'insérez pas échapper les caractères au milieu d'un personnage. C'est pourquoi vous avez besoin d'une connexion pour mysql_real_escape_string; il est nécessaire, afin de savoir comment la chaîne doit être traitée.

Cependant, au lieu d'y échapper, c'est une bonne idée pour utiliser des requêtes paramétrées à partir de la bibliothèque MySQLi; il y a eu précédemment des bugs dans la routine d'échappement, et il est possible que certains pouvaient apparaître de nouveau. Le paramétrage de la requête est beaucoup, beaucoup plus difficile à gâcher, il est donc moins probable que vous pouvez obtenir compromise par un serveur MySQL d'un bug.

3voto

deceze Points 200115

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 à mysql_real_escape_string() sauf qu' mysql_real_escape_string() prend un gestionnaire de connexion et échappe à la chaîne selon le jeu de caractères actuel. mysql_escape_string() ne prend pas un argument connexion et ne respecte pas le courant paramètre charset.

3voto

Rocky Sharma Points 29

mysql_escape_string "n'est pas amorti de 5,3 mais, pour 4.3.0 et au-dessus. Donc, tout en utilisant la version de PHP ci-dessus/ou 4.3.0 devez utiliser mysql_real_escape_string.

si vous utilisez php < 4.3.0, que faire de votre magic_quotes_gpc active à partir de php.ini, mais il est recommandé de mettre à jour, mais si votre code aura problème que assurez-vous que vous utilisez, magic_quotes_gpc et addslash de la fonction plutôt que d' mysql_escape_string.

1voto

Jeff_Alieffson Points 132

maintenant, ces deux fonctions sont amorties en PHP 4 >= 4.3.0, PHP 5. Ils recommandent d'utiliser des PDO_MySQL extension

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X