Ошибка при замене слов, содержащих кавычки в mySQL - PullRequest
1 голос
/ 11 сентября 2009

Я уже обновил много записей, но когда пришло слово, содержащее кавычку, я получаю эту ошибку: «ОШИБКА: Незакрытая кавычка @ 1357»

Я знаю, почему это дает мне эту ошибку, я просто не знаю, как ее решить.

Вот пример: ОБНОВЛЕНИЕ invnum SET cAccountName = заменить (cAccountName, 'JOHN'S', 'BEN')

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 11 сентября 2009

если вы используете скрипт для обновления ваших записей, используйте встроенную функцию экранирования. для php это будет mysql_real_escape_string

2 голосов
/ 11 сентября 2009

Кавычки Escape внутри строк:

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

Вы хотите быть очень осторожным с этим - неправильное обращение с этим является источником атак SQL-инъекций и является основным источником проблем безопасности.

0 голосов
/ 11 сентября 2009

Попробуйте вместо этого:

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

Если вам нужно использовать оба типа кавычек в строке, вам нужно будет избегать того типа кавычек, который вы используете для окружения строки, когда они встречаются внутри нее (в противном случае интерпретатор SQL будет думать, что строка заканчивается перед ней на самом деле.

Например:

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

и так далее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...