Le caractère apostrophe pose un problème dans tous les dialectes SQL utilisées pour la programmation de base de données . Pour MySQL, comme dans les autres versions de SQL , les programmeurs entourent données de caractères avec des apostrophes pour insérer des données dans une table, mettre à jour ou d'effectuer d'autres fonctions de base de données . Le problème se pose lorsque lui-même les données de caractères contient des apostrophes comme des signes de ponctuation . La solution réside dans le placement d'un caractère spécial précédant immédiatement les apostrophes dans les données de caractères. Apostrophe Séparateur
Dans la version MySQL de SQL, vous signaler le début et la fin d'une chaîne avec des apostrophes ou des guillemets. Les deux exemples suivants sont valides:
INSERT INTO compagnie_table ( company_name ) VALUES ' The Fish Shack »;
INSERT INTO compagnie_table ( company_name ) VALUES " The Fish Shack " ;
< p> l'exemple suivant crée toutefois une erreur:
INSERT INTO compagnie_table ( tag_line ) valeurs " Mangez chez Joe - C'est la bonne nourriture! " ;
SQL veut interpréter comme « Mangez chez Joe », « avec tout ce qui suit le deuxième apostrophe comme erronée . Le texte qui suit ne résout pas le problème :
INSERT INTO compagnie_table ( tag_line ) VALUES " Mangez chez Joe - C'est la bonne nourriture! " ;
Cela fonctionnera si le texte n'avait qu'un seul apostrophe entre les guillemets , mais ce texte a deux. Aussi, parce que certains langages de programmation de pages Web utilisent des guillemets eux-mêmes , vous voudrez peut-être éviter de les utiliser dans votre SQL.
Doubles Apostrophes et la solution de Backslash évasion
MySQL est d'interpréter deux apostrophes - '' - comme un seul caractère de données de citation. Une barre oblique inverse , ou "\\ ", précédant immédiatement une apostrophe dans les données a le même effet . MySQL traite la combinaison des anti-slash et autres caractères spéciaux comme une séquence d'échappement , créant de fait un caractère sur deux. Les deux exemples suivants résoudre le problème :
INSERT INTO compagnie_table ( tag_line ) valeurs " Mangez chez Joe '' s - Il Good Food s '' ' ;
INSERT INTO compagnie_table ( tag_line ) VALUES « Mangez chez Joe \\ 's - C \\' est la bonne nourriture! " ;
Lorsque vous écrivez des programmes qui créent des comptes MySQL , vous devez d'abord balayer toutes vos chaînes de texte et d' ajouter soit une apostrophe ou oblique avant les apostrophes dans vos données .
addslashes Fonction
Le langage de programmation Web PHP, souvent utilisé en conjonction avec MySQL, dispose d'une fonction intégrée dans addslashes pour convertir automatiquement les apostrophes aux paires anti-slash - apostrophe . Il suffit de remplir la fonction de vos chaînes de données comme dans cet exemple :
tag_line $ = addslashes ( tag_line $ );
stripslashes Fonction:
Une fois que vous ont converti apostrophes dans les variables de données à backslash - apostrophes , vous devrez peut-être les reconvertir à des données normales. La fonction PHP stripslashes effectue cette tâche pour vous en une seule étape . Utilisez-le comme dans l'exemple suivant :
tag_line $ = stripslashes ( tag_line $ );