오류 MySQL에 인용문이 포함 된 단어를 대체 할 때
-
05-07-2019 - |
문제
이미 많은 레코드를 업데이트했지만 인용문이 포함 된 단어에 관해서는이 오류가 발생합니다. "오류 : Unclosed Quote @ 1357"
왜 그것이 나 에게이 오류를 주는지 알고 있습니다. 나는 그것을 해결하는 방법을하지 않습니다.
다음은 샘플입니다. 업데이트 인 VNUM 세트 cAccountName
= 교체 (cAccountName
, '존', '벤'))
미리 감사드립니다.
해결책
문자열 내부의 탈출 인용문 :
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\""
등등.
제휴하지 않습니다 StackOverflow