MySQL의 문서 가되어야한다고 말한다 \'
. 그러나 scite와 mysql은 모두 ''
작동합니다. 나는 그것을 보았습니다. 어떻게해야합니까?
\'
''
내가 실수하지 않으면 ANSI SQL을 준수 하는 반면 MySQL 은
MySQL의 문서 가되어야한다고 말한다 \'
. 그러나 scite와 mysql은 모두 ''
작동합니다. 나는 그것을 보았습니다. 어떻게해야합니까?
\'
''
내가 실수하지 않으면 ANSI SQL을 준수 하는 반면 MySQL 은
답변:
당신이 인용 한 MySQL 문서는 실제로 당신이 언급 한 것보다 조금 더 말합니다. 또한 말합니다
"
'
"로 인용 된 문자열 내부의 "'
"는 " "로 쓸 수 있습니다''
.
(또한 MySQL 5.0 버전의 표 8.1. 특수 문자 이스케이프 시퀀스 에 연결했으며 현재 버전은 5.6이지만 현재 표 8.1. 특수 문자 이스케이프 시퀀스 는 매우 유사합니다.)
나는 매개 변수 에backslash_quote (string)
대한 Postgres 메모 가 유익 하다고 생각합니다 .
따옴표를
\'
문자열 리터럴로 표시 할 수 있는지 여부를 제어합니다 . 따옴표를 나타내는 기본 SQL 표준 방법은 따옴표를 두 배로 늘리는 것 (''
)이지만 PostgreSQL은 역사적으로도 받아 들였습니다\'
. 그러나를 사용\'
하면 보안 위험이 발생합니다.
즉, 이중 인용 부호 문자를 사용하는 것이 작은 따옴표를 이스케이프 처리하기 위해 백 슬래시를 사용하는 것보다 전체적이고 장기적으로 더 나은 선택입니다.
이제 언어 선택, SQL 데이터베이스 및 비표준 쿼크 선택 및 쿼리 프레임 워크 선택을 방정식에 추가하려는 경우 다른 선택으로 끝날 수 있습니다. 제약 조건에 대한 많은 정보를 제공하지 않습니다.
표준 SQL은 큰 따옴표를 사용합니다. MySQL은이를 합리적으로 준수해야합니다.
'He said, "Don''t!"'
'
”로 인용 된 문자열 안에“ '
”는“ ''
” . " "
"로 인용 된 문자열 내부의 " "
"는 " "로 쓸 수 있습니다 ""
. 따옴표 문자는 이스케이프 문자 (“``”)로 시작합니다.
user2087510의 의미는 다음과 같습니다.
name = 'something'
name = name.replace("'", "\\'")
나는 또한 이것을 성공으로 사용했다.
내가 알고있는 세 가지 방법이 있습니다. 첫 번째는 가장 아름답 지 않고 두 번째는 대부분의 프로그래밍 언어에서 일반적인 방법입니다.
'I mustn''t sin!'
\
작은 따옴표 앞에 이스케이프 문자 를 사용하십시오 '
.'I mustn\'t sin!'
"I mustn't sin!"
\'
언어는 너무 많은 프로그래밍 언어에서 사용되지만 ''
더 많은 SQL 언어에서 지원되므로 옵션 1을 사용하는 것이 호환성에 더 좋습니다. 예를 들어 Sqlite는 백 슬래시 이스케이프에서는 작동하지 않습니다.
문자열을 교체
value = value.replace(/'/g, "\\'");
여기서 value는 데이터베이스에 저장할 문자열입니다.
더욱이,
이것에 대한 NPM 패키지, 당신은 그것을 볼 수 있습니다
PHP에서는 SQL 문에 사용하기 위해 문자열에서 특수 문자를 이스케이프하는 mysqli_real_escape_string ()을 사용하는 것이 좋습니다.
참조 https://www.php.net/manual/en/mysqli.real-escape-string.php를
아마도 주제가 맞지 않지만 HTML 양식에서 텍스트 입력을 삭제하는 방법을 찾고 있었으므로 사용자가 아포스트로피 문자를 입력 할 때 텍스트를 SQL에 쓰려고 할 때 오류가 발생하지 않습니다. 기반의 DB 기반 테이블. 이 작업을 수행하는 몇 가지 방법이 있으며 SQL 삽입에 대해서도 읽을 수도 있지만 PHP의 간단한 옵션은 모든 아포스트로피 를 저장하려는 대상 으로 변환 하는 htmlspecialchars () 함수를 사용하는 것입니다. '
어쨌든.
''
또는\'
올바른?