본문 바로가기
MySql

MySQL 문자열을 이스케이프한다는 것은 무엇을 의미합니까?

by 베이스 공부 2021. 2. 9.
반응형


나는 보았다 :








 

해결 방법

 

문자열 이스케이프는 해당 문자열에 사용 된 따옴표 (및 기타 문자)의 모호성을 줄이는 것을 의미합니다. 예를 들어 문자열을 정의 할 때 일반적으로 큰 따옴표 또는 작은 따옴표로 묶습니다.

"Hello World."

하지만 내 문자열에 큰 따옴표가 있으면 어떻게 될까요?

"Hello "World.""

이제 모호함이 있습니다. 인터프리터는 내 문자열이 어디에서 끝나는 지 모릅니다. 큰 따옴표를 유지하려면 몇 가지 옵션이 있습니다. 내 문자열 주위에 작은 따옴표를 사용할 수 있습니다.

'Hello "World."'

또는 내 따옴표를 벗어날 수 있습니다.

"Hello \"World.\""

슬래시가 앞에 오는 모든 따옴표는 이스케이프 되며 문자열 값의 일부로 이해됩니다.

쿼리와 관련하여 MySQL에는 약간의 혼동없이 쿼리에 사용할 수없는 특정 키워드가 있습니다. 열 이름이 "Select"인 값 테이블이 있고이를 선택한다고 가정합니다.

SELECT select FROM myTable

이제 쿼리에 약간의 모호성을 도입했습니다. 쿼리 내에서 백틱을 사용하여 모호성을 줄일 수 있습니다.

SELECT `select` FROM myTable

이것은 필드 이름을 선택할 때 잘못된 판단을 사용하여 도입 한 혼란을 제거합니다.


// Query
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
            mysql_real_escape_string($user),
            mysql_real_escape_string($password));

add_slashes , addcslashes , quotemeta 등과 같은 문자열을 이스케이프하기위한 다른 방법이 있지만 목표가 안전한 쿼리를 실행합니다. 대부분의 개발자는 PostgreSQL의 컨텍스트에서 mysql_real_escape_string 또는 pg_escape_string 을 선호합니다.

 

참조 페이지 https://stackoverflow.com/questions/10646142

 

 

반응형

댓글