Je ne peux pas insérer d'apostrophes dans MySQL

MySQL nécessite une gestion minutieuse du texte pour la gestion des apostrophes.

Délimiteur d'apostrophe

Dans la version SQL de MySQL, le début et la fin d'une chaîne sont indiqués par des guillemets simples ou doubles. Les deux exemples suivants sont valides:

INSERT INTO COMPANY_TABLE (company_name) VALEURS 'La cabane à poisson';

INSERT INTO COMPANY_TABLE (company_name) VALEURS "La cabane à poisson";

Cependant, l'exemple suivant génère une erreur:

INSERT INTO COMPANY_TABLE (tag_line) VALEURS 'Mangez chez Joe - C'est de la bonne nourriture!';

SQL interprète la chaîne comme "'Mange chez Joe" ", avec tout ce qui suit la deuxième apostrophe comme étant faux. Le texte suivant ne résout pas le problème:

INSERT INTO COMPANY_TABLE (tag_line) VALEURS "Manger chez Joe - C'est de la bonne nourriture!";

Cela fonctionnerait si le texte avait une seule apostrophe entre les guillemets mais que ce texte en avait deux De plus, comme certains langages de programmation de pages Web utilisent des guillemets, évitez de les utiliser dans votre code SQL.

Les doubles apostrophes et la barre inversée

La solution est déterminée par MySQL interprétant les deux apostrophes consécutifs '', comme un guillemet simple pour les données de caractères. L'utilisation d'un caractère barre oblique inverse, ou "\", immédiatement avant une apostrophe dans les données a le même effet. MySQL traite la combinaison de la barre oblique inversée et d'autres caractères spéciaux comme une séquence d'échappement, créant un caractère à partir des deux. Les exemples suivants résolvent le problème:

INSERT INTO COMPANY_TABLE (tag_line) VALEURS "Manger chez Joe - C'est de la bonne nourriture!";

INSERT INTO COMPANY_TABLE (tag_line) VALEURS 'Mangez chez Joe - c'est de la bonne nourriture!';

Lorsque vous écrivez des programmes pour créer des phrases dans MySQL, la première chose à faire est d'explorer toutes les chaînes de texte et d'ajouter une apostrophe ou une barre oblique inverse avant les apostrophes des données.

Fonction Addslashes

Le langage de programmation Web PHP est souvent utilisé en combinaison avec MySQL. Il comporte une fonction appelée additionlashes pour convertir automatiquement les apostrophes. Exécutez simplement la fonction de vos données de type chaîne comme dans cet exemple:

$ tag_line = addedlashes ($ tag_line);

Fonction Stripslashes

Une fois que vous avez converti les apostrophes en variables de données des barres obliques inversées et des apostrophes, il peut être nécessaire de reconvertir les données en données normales. La fonction PHP stripslashes accomplit cette tâche en une seule étape. Utilisez-le comme exemple suivant:

$ tag_line = stripslashes ($ tag_line);