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?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top