2012-01-05 3 views
1

내가 내 데이터베이스를 검색하는 SQL 문을SQL 문을 사용하여 백분율 기호를 검색하는 방법은 무엇입니까?

지금은 SQL의 이해
"SELECT catelogue.ARTIST, catelogue.TITLE, catelogue.`CAT NO.`, 
catelogue.FORMAT,catelogue.`IMAGE PATH` 
FROM catelogue 
WHERE catelogue.TITLE LIKE '%$search%'" 

은 당신의 %는 와일드 카드입니다하지만 난 지금이 ​​CD의 제목이기 때문에 100 % 여름을 검색하기 위해 검색을해야합니다 .

백분율 기호가 다른 와일드 카드에 영향을 미치지 않도록하는 방법이 있습니까?

편집 :

그래서 나는이

$search = addcslashes(mysql_real_escape_string($search), '%_'); 

를 사용하는 경우 레그에 대한 필요가

$search = preg_replace("/[^a-zA-Z 0-9\/\\+\.,:?-]+/", "", $search) 

를 교체하고는 mysql_real_escape_string와 함께 사용할 수 대체 레그로 수 다음이 있습니까?

답변

3

\%은 이스케이프 된 "%"문자입니다.

편집 :

PHP :

$search = "100\% Summer"; 

string addcslashes (string $str , string $charlist) 일반적으로 사용 :

$search = "100% Summer"; 
$search = addcslashes($search, '%_'); 

는 SQL 주입을 방지하기 위해 string mysql_real_escape_string (string $unescaped_string [, resource $link_identifier ])를 사용하는 것을 잊지 마십시오. 그래서 최종 코드 힘의 모양 : 당신의 $search는 사용자의 입력에서 오는 경우는, 그런데 백 슬래시

$search = str_replace('%', '\%', $search); 

... 

WHERE catelogue.TITLE LIKE '%$search%' 

와 퍼센트 기호를 탈출 할 수

$search = "100% Summer"; 
$search = addcslashes(mysql_real_escape_string($search), '%_'); 
+0

'addslashes'은 작은 따옴표 (')에 슬래시, 큰 따옴표 ("), 백 슬래시 (\) 및 NUL을 추가합니다. – deceze

+0

@deceze, 당신이 바로, 내 실수가 수정. –

0

, 다음 코드는 SQL injection에 취약합니다.

+0

이 네 내가 SQL 주입에 대해 알고 누군가가 내 테이블을 떨어 뜨려서 preg 바꾸기 기능을 실행하고 있습니다. – Mark

+0

@user SQL 인젝션에 대한 preg 바꾸기 기능이 있습니까? – deceze

+1

@deceze : 가난한 사람의 위생 처리 :-) –

1
SELECT catelogue.ARTIST, catelogue.TITLE, catelogue.`CAT NO.`, 
catelogue.FORMAT,catelogue.`IMAGE PATH` 
FROM catelogue 
WHERE catelogue.TITLE LIKE '%100\% Summer%'; 
관련 문제