2011-04-12 3 views
0

mysqli_real_escape_string 및 작은 따옴표에 문제가 있습니다.mysqli_real_escape_string 관련 문제 (및 마법 인용 부호가 꺼짐)

삽입이 'mysqli_real_escape_string'을 포함하는 값을 취할 때마다 삽입을 실패하게 만듭니다.

나는 마법 따옴표 \이 문제의 일반적인 원인이 될,하지만 여전히 내가 알아낼 것 '이 아니라 \'또는 어떤 \\ '를 사용할 수없는

무엇을해야 할 수도 있습니다

사람은 말해 줄 수 여기 잘못 갔어?

감사합니다.

+0

나는 또한 다른 것들을 잘 이스케이프해야한다고 언급해야한다. A "는 예상대로"\ "는 \\ –

+0

이됩니다."나는 갖고 있지 않습니다 "단락에서 \ '와 \'사이의 차이가 보이지 않습니까? 이 상황이 발생하는 샘플 쿼리를 표시 할 수 있습니까? 이스케이프 기능은 SQL에서 '메타'인 문자를 이스케이프 처리합니다. 일반적으로 그것은 "빅 3"의 이름을 짓는 '\' "입니다 –

+0

두번째를 썼을 때 두번째가 제거되었을 때 차이점은 제가 \\ '가 아니라는 것입니다. \\ 또는 \\ \ '(공백 제외) 예제 쿼리는 다음과 같습니다. $ query = "INSERT INTO'test' ('test'.'a','test'.'b') VALUES ('$ a', '$ b'); $ a와 $ b는 이스케이프 처리되었으며 ' –

답변

2

주석은 약간 제한적이기 때문에이 질문에 답하십시오.

그래서 당신은

$a = mysqli_real_escape_string(... something ...); 
$b = mysqli_real_escape_string(... something else ...); 

$sql = "INSERT ... VALUES ('$a', '$b')"; 

같은 쿼리를 생성하는거야?


ok. 그래서이 말을하자

$a = "'"; // a is now a single quote: ' 
$escaped_a = mysql_real_escape_string($a); // should be \' now 

$sql1 = "INSERT ... VALUES ('$a' ..." 
$sql2 = "INSERT ... VALUES ('$escaped_a' ..." 

당신이

INSERT ... vALUES (''' ... 
INSERT ... VALUES ('\'' ... 

첫 번째는 "나쁜"입니다와 끝까지해야한다. 여분의 견적 때문에. 두 번째는 유효합니다.

+0

예, 정확히 그렇습니다. –

+1

문제가되지 않아야합니다. 탈출 전후에 a/b 병을 비교 했습니까? 당신이 잘못된 장소에서 그것들을 꺼 버렸기 때문에 마술 따옴표가 계속 켜져있을 수도 있고, 나중에 지시어가 당신의 설정을 무시할 수도 있습니다. –

+0

이것은 이상합니다. 값은 단순히 'mysqli_real_escape_string'이전이다. 함수를 호출 한 후 값은 \ ' 이됩니다. 그러면 추가로 \이 나타나는 쿼리가 준비된 것일뿐입니다. 그 이유는 무엇입니까? 쿼리 형식을 다음과 같이 실행합니다. mysqli_query ($ db, "INSERT ... VALUES ('$ a', '$ b')"); –

관련 문제