문제

이미 많은 레코드를 업데이트했지만 인용문이 포함 된 단어에 관해서는이 오류가 발생합니다. "오류 : 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\""

등등.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top