2011-04-21 3 views
1

텍스트 상자에 입력 한 문자를 기반으로 PHP 검색을 수행하려고합니다. 패턴과 일치하고 데이터베이스에서 관련 결과를 찾길 원합니다. 내가PHP 패턴 일치 검색 시스템

"Jo Smi" 

에 입력 한 경우

그래서 그것은 사람이이를 얼마나 결과

J o Smith, Pojo Smithson, Ojo Smith

을 찾을 것입니다. 나는 데이터베이스에서 정보를 얻는 방법을 알고 있지만 다양한 분야의 부분은 아닙니다.

목적은 필드 user_firstname, user_lastnameuser_email

어떤 아이디어가에서 검색하는 사용자를 검색하는 것입니다?

+5

그리고 질문은 무엇과 마무리를 시작? – hsz

+0

이것들은 모두 정답입니다 : 'like와 wild card'그러나, SQL 문에 하락하지 않은 텍스트를 놓기 만하면 보안 상 위험 할 수 있습니다. (watcher는 이것을'$ escapedTextString'으로 암시합니다.) SQL 주입 공격 – horatio

답변

1

쿼리에서 직접 수행 할 수 있어야합니다.

는 내가 생각하는 작업을해야

SELECT * FROM `database` WHERE `name` REGEXP '{INPUT TEXT HERE}'; 

을 텍스트 상자 결과를 얻을 그들을 탈출.

+0

LIKE가 빠르지 만 REGEXP에서 더 정확한 결과를 얻을 수 있습니다.당신의 필요에 달려있다. –

0

당신은 LIKE 절을 사용하여 데이터베이스의 필드에 간단한 검색을 수행 할 수 있습니다

$query = "SELECT Fields FROM Table WHERE TestField LIKE '%".$escapedTextString."%'"; 
0

이 검색어의 상단 맡았다 버전에 대한 LIKE 검색합니다. mysql_real_escape_string()을 잊지 마세요.

$searchpattern = mysql_real_escape_string(strtoupper("Jo Smi")); 
mysql_query("SELECT * FROM table WHERE UPPER(column) LIKE '%$searchpattern%';"); 
0

안녕하세요 남자 이전의 대답은 좋다하지만 당신은이 정보를 알고 싶어

  1. 얻을 변수 =>$name = $_GET['name'];

  2. 당신이 그것을 대문자 사용할 수 있도록하려면 strtoupper();

  3. 원한다면 로 만들 소문자 사용 strtolower();
  4. 당신이 검색하려면 where name = $namewhere name like $name
  5. 이 정보 에
  6. 의 abc % 등 => 변수 ABC로 시작하고 어떤 일
  7. 퍼센트 abc 방송의 % => 변수 마무리 어디 로 = 교체해야합니다 어떤 일을 시작 포함 abc 방송, 어떤 일
  8. 퍼센트 abc 방송 => 변수 마무리는 어떤 일, ABC