사용자가 검색 문자열을 입력하여 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 비교를 사용하여 여러 필드를 검색하고 사용자 입력 검색에서 영숫자가 아닌 문자를 무시할 수 있습니까? 이것은 가능한가?
감사합니다.
영숫자가 아닌 문자를 제거하려는 경우'like '또는'regex'가 작동 할 것이라고 생각합니다. 이 접근법은 다른 결과를 기대할 수 있습니다. – chris85