Maison > base de données > tutoriel mysql > Quelle fonction d'échappement est la meilleure pour MySQL : `mysql_real_escape_string` ou `addslashes` ?

Quelle fonction d'échappement est la meilleure pour MySQL : `mysql_real_escape_string` ou `addslashes` ?

Susan Sarandon
Libérer: 2024-11-12 15:50:02
original
1045 Les gens l'ont consulté

Which escaping function is better for MySQL: `mysql_real_escape_string` or `addslashes`?

Fonctions d'échappement MySQL : mysql_real_escape_string vs addlashes

Les fonctions PHP mysql_real_escape_string() et addlashes() sont toutes deux utilisées pour échapper aux caractères potentiellement problématiques dans des chaînes destinées à être insérées dans des bases de données MySQL. Cependant, il existe des distinctions subtiles entre les deux fonctions qui peuvent avoir un impact sur leur adéquation à différents cas d'utilisation.

addslashes()

addslashes() remplace un jeu de caractères prédéfini. avec des barres obliques inverses pour éviter qu'ils ne soient interprétés comme des caractères spéciaux par la base de données. Le jeu de caractères par défaut échappé par addlashes() comprend les guillemets simples ('), les guillemets doubles ("), la barre oblique inverse () et l'octet NULL.

mysql_real_escape_string()

mysql_real_escape_string() encapsule un appel à la fonction interne mysql_real_escape_string() de MySQL, qui échappe une gamme de caractères plus large que addlashes() Plus précisément, mysql_real_escape_string() échappe les caractères suivants :

  • x00 (. Octet NULL)
  • n (saut de ligne)
  • r (retour chariot)
  • , (virgule)
  • ' (guillemet simple)
  • " (guillemet double)
  • x1a (EOF (fin de fichier))

Différences clés

La principale différence entre mysql_real_escape_string () et addlashes() résident dans leur gestion des caractères d'échappement mentionnés ci-dessus. mysql_real_escape_string() échappe certains caractères que addlashes() ne fait pas, comme l'octet NULL, le saut de ligne et le retour chariot.

De plus, mysql_real_escape_string() effectue l'opération d'échappement basée sur les règles définies par MySQL, qui peut différer des règles d'échappement appliquées par addlashes(). Dans les versions récentes de MySQL, par exemple, l'échappement de chaîne peut impliquer de doubler les guillemets plutôt que de les faire précéder de barres obliques inverses. mysql_real_escape_string() gérerait ces modifications automatiquement, contrairement à addlashes().

Quand utiliser quelle fonction

En général, mysql_real_escape_string() est préféré à addlashes() pour échapper les chaînes destinées aux bases de données MySQL. En effet, mysql_real_escape_string() utilise des règles d'échappement spécifiques à MySQL, garantissant que les chaînes sont correctement préparées pour être insérées dans les requêtes MySQL.

D'un autre côté, addlashes() peut convenir dans les situations où vous devez échapper des chaînes. à d'autres fins, telles que la manipulation générale de texte ou la préparation de chaînes à afficher. Cependant, il est essentiel d'être conscient des limitations de addlashes() et de tester minutieusement votre code lorsque vous l'utilisez pour échapper des chaînes destinées aux bases de données MySQL.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal