Question

J'ai déjà mis à jour de nombreux enregistrements, mais un mot contenant une citation me donne l'erreur suivante: "ERREUR: citation non fermée @ 1357"

Je sais pourquoi cela me donne cette erreur, je ne sais tout simplement pas comment la résoudre.

Voici un exemple: UPDATE invnum SET cAccountName = remplacer ( cAccountName , 'JOHN'S', 'BEN')

Merci d'avance.

Était-ce utile?

La solution

Les guillemets d'échappement à l'intérieur des chaînes:

UPDATE invnum SET cAccountName = replace(cAccountName,'JOHN\'S','BEN')

Vous voulez être très prudent avec ceci - ne pas le gérer correctement est la source de SQL attaques par injection et constitue une source majeure de problèmes de sécurité.

Autres conseils

si vous utilisez un script pour mettre à jour vos enregistrements, utilisez une fonction d'échappement intégrée. pour php, ce serait mysql_real_escape_string

Essayez plutôt ceci:

UPDATE invnum SET cAccountName = replace(cAccountName,"JOHN'S","BEN")

Si vous devez utiliser les deux types de guillemets dans une chaîne, vous devez échapper au type de guillemets que vous utilisez pour entourer la chaîne lorsqu'ils surviennent (sinon, l'interpréteur SQL pensera que la chaîne se termine avant elle. fait réellement.

Par exemple:

Johns   becomes "Johns"
John's  becomes "John's" or 'John\'s'
"John"  becomes '"John"' or "\"John\""

et cetera.

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