MySql에서 아포스트로피(')를 이스케이프하는 방법
MySQL 문서에는 다음과 같이 기술되어 있습니다.\'단, scite와 mysql 둘 다''효과가 있어요. 저도 봤는데 효과가 있어요.어떻게 해야 하나?
당신이 인용한 MySQL 문서에는 실제로 당신이 언급한 것보다 조금 더 많은 내용이 나와 있습니다.또 이렇게 써있네요.
A “
'따옴표로 묶인 문자열 안에 "'"는 "로 표기할 수 있습니다.''”.
(또한 MySQL 5.0 버전의 표 8.1에 링크되어 있습니다). 특수 문자 이스케이프 시퀀스 및 현재 버전은 5.6이지만 현재 표 8.1입니다. 특수 문자 이스케이프 시퀀스는 거의 비슷합니다.)
파라미터의 Postgres 메모는 유익하다고 생각합니다.
이는 견적 마크를 다음 항목으로 나타낼 수 있는지 여부를 제어합니다.
\'스트링 리터럴로.SQL의 표준 견적서 표시 방법은 견적서 마크를 2배로 하는 것이 바람직합니다('') 단, 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!"
그냥 쓰다''대신해서'내 말은 두 번'
다음은 예를 제시하겠습니다.
SELECT * FROM pubs WHERE name LIKE "%John's%"
큰따옴표를 사용하여 작은따옴표를 묶습니다.
작은 따옴표를 사용해야 하는 경우(및 문자를 이스케이프해야 하는 경우)
SELECT * FROM pubs WHERE name LIKE '%John\'s%'
주제에서 벗어났을 수도 있지만 HTML 양식에서 입력한 텍스트를 삭제하여 사용자가 아포스트로피를 입력할 때 DB에 있는 SQL 기반 테이블에 텍스트를 쓰려고 할 때 오류가 발생하지 않도록 하기 위해 여기에 왔을 수 있습니다.여기에는 몇 가지 방법이 있으며 SQL 주입에 대해서도 읽어보실 수 있습니다.다음은 PHP에서 준비된 문과 바운드 파라미터를 사용하는 예입니다.
$input_str = "Here's a string with some apostrophes (')";
// sanitise it before writing to the DB (assumes PDO)
$sql = "INSERT INTO `table` (`note`) VALUES (:note)";
try {
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':note', $input_str, PDO::PARAM_STR);
$stmt->execute();
} catch (PDOException $e) {
return $dbh->errorInfo();
}
return "success";
HTML 엔티티 참조를 사용하여 아포스트로피를 저장하는 특별한 경우, PHP에는 htmlspecialchars() 함수가 있습니다.'코멘트가 나타내듯이, 이것은, 예시와 같이, 적절한 위생을 대신하는 것으로는 사용할 수 없습니다.
문자열을 바꿉니다.
value = value.replace(/'/g, "\\'");
여기서 value는 데이터베이스에 저장할 문자열입니다.
더,
이것에 대한 NPM 패키지는, 조사해 볼 수 있습니다.
https://www.npmjs.com/package/mysql-apostrophe
아포스트로피를 사용하는 데이터 포인트가 있으면 아포스트로피 앞에 아포스트로피를 하나 추가할 수 있습니다.
예: '여기는 존의 집입니다.'
여기서 MYSQL은 'John's place'라는 두 문장을 가정합니다.
'여기는 존의 집입니다'라고 쓰면 돼요.그렇게 해야 할 것 같아요.
PHP에서는 mysqli_real_escape_string()을 사용하는 것이 좋습니다.이 mysqli_real_escape_string()은 SQL 문에서 사용하기 위해 문자열 내의 특수 문자를 이스케이프합니다.
https://www.php.net/manual/en/mysqli.real-escape-string.php 를 참조해 주세요.
언급URL : https://stackoverflow.com/questions/9596652/how-to-escape-apostrophe-in-mysql
'programing' 카테고리의 다른 글
| Python에서 새 행을 이전 CSV 파일에 추가하는 방법은 무엇입니까? (0) | 2022.12.20 |
|---|---|
| MySQL의 BIT와 TINYINT의 차이점은 무엇입니까? (0) | 2022.12.20 |
| jQuery를 사용하여 폼 데이터를 JavaScript 개체로 변환 (0) | 2022.12.20 |
| 스프링 부트: 로컬 호스트의 REST 컨트롤러에 액세스할 수 없음(404) (0) | 2022.12.20 |
| inversedBy와 mappedBy의 차이점은 무엇입니까? (0) | 2022.12.10 |