2010-01-20 2 views
0

mysql에서 검색과 관련하여 몇 가지 문제가 있습니다. 다음은 내 쿼리입니다.검색은 LIKE를 사용하는 mysql 질의에 행을 반환하지 않고 ""를 갖는 값을 반환합니다.

SELECT * FROM table WHERE name LIKE "%admin\'s%"; 

내가이 쿼리를 실행할 때 제로 데이터를 반환합니다.

실제로 나는 "admin \ 's"이 (가) db에 저장되어 있습니다. 이 "\"는 SQL 삽입을 방지하기위한 것입니다. 나는 mysql_real_escape_string을 사용하여 SQL 주입을 막았다.

하지만 내 변수에 세 번 addslashes를 사용하면 작동합니다.

그래서 내 아래 쿼리가 작동합니다.

SELECT * FROM table WHERE name LIKE "%admin\\\\\\\'s%"; 

위의 쿼리는 admin과 같은 이름의 데이터를 반환합니다.

나는 어디가 잘못되었는지 알지 못합니다.

답변

1

잘 DB 관리자 \에서 이런 식으로 데이터를 가질 수 없습니다 .. 당신이 문자열을 두 번 이스케이프했을 가능성이 높습니다 (서버에서 magic_quotes를 활성화하지 않았는지 확인하십시오).

INSERT ... username = "admin\'s"; 

을 할 경우 사용자 이름 값 관리자의 나의 recomandation이 가서 데이터베이스에서 슬래시를 제거하고 첫 번째 쿼리가 작동해야하는 것입니다 귀하의 DB에있을 것이다.

+0

아니요. 나는 magic_quote를 활성화하지 않았습니다. SQL 주입을 막기 위해 mysql_real_escape_string을 사용하고 있습니다. 뭐가 잘못 되었나요? – Avinash

+2

아무것도 잘못 ..하지만 mysql 데이터베이스의 데이터는 슬래시로 저장해야합니다 .. 도주했다하더라도. 이스 케이 핑은 쿼리가 작동하기위한 것입니다. –

관련 문제