Frage

Ich habe schon viele Datensätze aktualisiert, aber wenn es zu einem Wort kam, das ein Zitat enthält erhalte ich diese Fehlermeldung: „Fehler: Unclosed Zitat @ 1357“

Ich weiß, warum es mir diese Fehlermeldung zu geben, kann ich einfach nicht, wie es zu lösen.

Hier ist ein Beispiel: UPDATE invnum SET cAccountName = ersetzen (cAccountName 'JOHN'S', 'BEN')

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Escape Anführungszeichen innerhalb von Zeichenketten:

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

Sie möchten mit diesem wirklich vorsichtig sein - nicht mit dieser richtig umzugehen, ist die Quelle der SQL Injection-Angriffe und ist eine wichtige Quelle von Sicherheitsproblemen.

Andere Tipps

Wenn Sie ein Skript verwenden Ihre Unterlagen eine builtin zu aktualisieren verwenden Flucht Funktion. für PHP, die wäre mysql_real_escape_string

Versuchen Sie stattdessen:

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

Wenn Sie beide Arten von Anführungszeichen innerhalb einer Zeichenkette verwenden müssen, dann werden Sie die Art der Anführungszeichen entkommen müssen Sie die Zeichenfolge umgeben verwenden, wenn sie in ihr auftreten (da sonst die SQL-Interpreter wird denken, die Zeichenfolge, bevor es endet tatsächlich der Fall ist.

Zum Beispiel:

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

und so weiter.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top