Il existe une autre façon de procéder qui peut être plus sûre ou non, selon votre point de vue. Il nécessite MySQL 5.6 ou ultérieure en raison de l'utilisation d'une fonction de chaîne spécifique: FROM_BASE64
.
Disons que vous avez ce message que vous souhaitez insérer:
"Ah," Nick presque sans tête agita une main élégante, "une question sans importance ... Ce n'est pas comme si je voulais vraiment rejoindre ... Je pensais que je postulerais, mais apparemment je ne remplis pas les conditions requises. '- "
Cette citation a un tas de guillemets simples et doubles et serait vraiment pénible à insérer dans MySQL. Si vous insérez cela à partir d'un programme, il est facile d'échapper aux guillemets, etc. ou sensible au retour à la ligne, etc.
Au lieu de cela, vous pouvez encoder le texte en Base64, donc vous avez une chaîne "propre":
SWtGb0xDSWdUbVZoY214NUlFaGxZV1JzWlhOeklFNXBZMnNnZD
JGMlpXUWdZVzRnWld4bFoyRnVkQ0JvWVc1a0xDQWlZU0J0WVhS
MFpYCklnYjJZZ2JtOGdhVzF3YjNKMFlXNWpaUzRnTGlBdUlDNG
dTWFFuY3lCdWIzUWdZWE1nZEdodmRXZG9JRWtnY21WaGJHeDVJ
SGRoYm5SbApaQ0IwYnlCcWIybHVMaUF1SUM0Z0xpQlVhRzkxWj
JoMElFa25aQ0JoY0hCc2VTd2dZblYwSUdGd2NHRnlaVzUwYkhr
Z1NTQW5aRzl1SjMKUWdablZzWm1sc2JDQnlaWEYxYVhKbGJXVn
VkSE1uSUMwaUlBPT0K
Quelques notes sur l'encodage Base64:
- Le codage en Base64 est un codage binaire , vous feriez donc mieux de vous assurer que votre jeu de caractères est correct lorsque vous effectuez le codage, car MySQL va décoder la chaîne codée en Base64 en octets, puis les interpréter. Etre sur
base64
que MySQL est d'accord sur le codage des caractères (je recommande UTF-8).
- J'ai enveloppé la chaîne à 50 colonnes pour plus de lisibilité sur Stack Overflow. Vous pouvez l'envelopper dans le nombre de colonnes de votre choix (ou ne pas l'envelopper du tout) et cela fonctionnera toujours.
Maintenant, pour charger ceci dans MySQL:
INSERT INTO my_table (text) VALUES (FROM_BASE64('
SWtGb0xDSWdUbVZoY214NUlFaGxZV1JzWlhOeklFNXBZMnNnZD
JGMlpXUWdZVzRnWld4bFoyRnVkQ0JvWVc1a0xDQWlZU0J0WVhS
MFpYCklnYjJZZ2JtOGdhVzF3YjNKMFlXNWpaUzRnTGlBdUlDNG
dTWFFuY3lCdWIzUWdZWE1nZEdodmRXZG9JRWtnY21WaGJHeDVJ
SGRoYm5SbApaQ0IwYnlCcWIybHVMaUF1SUM0Z0xpQlVhRzkxWj
JoMElFa25aQ0JoY0hCc2VTd2dZblYwSUdGd2NHRnlaVzUwYkhr
Z1NTQW5aRzl1SjMKUWdablZzWm1sc2JDQnlaWEYxYVhKbGJXVn
VkSE1uSUMwaUlBPT0K
'));
Cela s'insérera sans aucune plainte, et vous n'avez pas besoin d'échapper manuellement au texte à l'intérieur de la chaîne.