Ошибка при замене слов, содержащих кавычки в mySQL

StackOverflow https://stackoverflow.com/questions/1409858

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

Это было полезно?

Решение

Экранирование кавычек внутри строк:

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

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

Другие советы

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

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

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\""

и так далее.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top