2016-07-26 3 views
0

사용자가 검색 문자열을 입력하여 mysql 데이터베이스에서 (PHP를 사용하여) 무언가를 검색하는 올바른 방법을 찾는 데 문제가있다. LIKE 및 % 와일드 카드를 사용하고 사용자 입력 검색을 영숫자가 아닌 문자는 무시하고 데이터베이스 필드와 비교합니다. 그것은 꽤 복잡하고, StackOverflow에서이 주제에 대한 몇 가지 다른 질문을 보았지만 아무도 대답이없는 것 같습니다. ...mysqli를 통해 영숫자가 아닌 문자를 무시하고 검색하기

MAKE    NAME1   NAME2 
-------------------------------------------------------- 
Boeing    B-17G   Flying Fortress 
Boeing    F-18E   Super Hornet 
Lockheed   F-16C   Viper 
Supermarine  Spitfire  Mk IX 
McDonnellDouglas F-18C   Hornet 

그리고 지금은 'F18'을 검색하는 사용자가 :

그래서 예를 들어, 나는 다음과 함께 '항공'테이블이있는 데이터베이스가 있다고 가정 해 보자

1) 비행기의 make, name1 또는 name2인지 여부를 알 수 없으므로 사용자가 정확한 유형 (즉 f-18c/f18c 대 f18c 대 f18)을 입력했는지 전혀 알 수 없습니다. 사용자가 LIKE 와일드 카드를 사용하여 % f18 %에 대해 세 필드를 모두 검색 할 수있는 검색을 입력했습니다. 이 LIKE '%의 F18 %의'OR 이름 1 LIKE '%의 F18 %의'OR NAME2 LIKE '%의 F18 %의'

2) 그 간단하지만 만들기 쉬운 이다, 문제는 그 데이터베이스 F18에서 F-18 ...로 표시되므로 심지어 % f18 %조차도 일치하는 레코드가 없습니다. 필자는 Make, Name1 및 Name2 필드를 FULLTEXT 색인 (영문자와 숫자는 무시할 수 있음)으로 색인화하려고했지만 LIKE % f18 % 검색을 사용할 때 반환 된 레코드를 얻지 못하는 것 같습니다. F-18C 호넷과 F-18E 수퍼 호 넷이 일치합니다. 이 문제를 해결하기 위해 RegEx를 사용할 수 있습니까? 필자는 f18 대신 f-18을 검색 할 경우 사용자 입력 검색에서 영숫자가 아닌 문자를 쉽게 제거 할 수 있지만 데이터베이스에 보관해야합니다.

질문은 어떻게 mysqli를 사용하여 LIKE 비교를 사용하여 여러 필드를 검색하고 사용자 입력 검색에서 영숫자가 아닌 문자를 무시할 수 있습니까? 이것은 가능한가?

감사합니다.

+0

영숫자가 아닌 문자를 제거하려는 경우'like '또는'regex'가 작동 할 것이라고 생각합니다. 이 접근법은 다른 결과를 기대할 수 있습니다. – chris85

답변

1

안녕하세요 당신은 당신이 한 번 phpmyadmin에서 그것을 실행하려고

SELECT * from Aviation where replace(NAME1,'-','') like '%f18%' 

result를 원하는 당신이이 줄 것이다이 query 사용할 수있는 검색에 alphanumeric을 추가 할 것을 확신합니다.

replace()에 대한 자세한 정보. 이것을 읽어주세요 http://www.w3resource.com/mysql/string-functions/mysql-replace-function.php

+0

완료! 잘됐다. 고마워! 이 답변이 같은 질문에 대해 더 많은 사람들에게 도움이되기를 바랍니다. –

관련 문제