2012-08-30 2 views
0

SQL 데이터베이스를 검색하는 PHP 폼이 있습니다. 각각 8 개의 양식 필드가 있으며 선택 사항입니다. 모든 항목을 공백으로두면 쿼리가 전체 데이터베이스를 반환합니다. 하나의 필드가 채워지면 하나의 필드로 필터링되고, 두 개는 두 개로 필터링됩니다. 그런 다음에는 null 항목을 검색 할 때까지 아무런 문제도 없습니다. 예를 들어 고객이 성을 어디에서 검색했는지를 원하지만 기본 전화 번호는 갖고 있지 않습니다. 나는 몇 시간 동안 일해 왔고 이와 비슷한 것을 구현하는 간단한 방법을 생각할 수 없다. 검색 필드에 키워드를 입력하면 항목이 다른 모든 항목 위에 Null 인 항목을 검색 할 수 있습니다. 따라서 "Smith"를성에 입력하고 "NULL"을 전화 번호에 넣으면 위의 예와 같이 작동합니다. 아래는 현재 코드입니다.PHP SQL 검색 양식 구문

$query = "SELECT * 
      FROM customer_search_view 
      WHERE COALESCE(customer_search_view.first_name,'') LIKE $firstName AND 
      COALESCE(customer_search_view.last_name,'') LIKE $lastName AND 
      COALESCE(customer_search_view.customer_id,'') LIKE $customerId AND 
      COALESCE(customer_search_view.primary_phone,'') LIKE $primaryPhone AND 
      COALESCE(customer_search_view.email,'') LIKE $email AND 
      COALESCE(customer_search_view.store,'') LIKE $store AND 
      COALESCE(customer_search_view.sales_associate,'') LIKE $salesAssociate AND 
      COALESCE(customer_search_view.bdr_associate,'') LIKE $bdrAssociate AND 
      COALESCE(customer_search_view.status,'') LIKE $status AND 
      COALESCE(customer_search_view.lead_category,'') LIKE $leadCategory 
      ORDER BY created_on DESC LIMIT 0,100"; 

뭔가 NULL LIKE 어디 그것뿐만 아니라 빠른 수정 될 검색 어쨌든이 있다면.

답변

1

NULL을 찾을 수있는 유일한 방법은 쿼리 등 전에 당신이 값을 반복 할 수 프런트 엔드를 변경할 수없는 경우 그래서 당신은

COALESCE(customer_search_view.primary_phone,'') $primaryPhoneOperator $primaryPhone 

처럼 당신의 변수를 확장 할 필요가 COALESCE(customer_search_view.primary_phone,'') IS NULL을 사용하는 것입니다 예 :

if(empty($primaryPhone)) { $primaryPhoneOperator = "IS NULL"; } else { $primaryPhoneOperator = "LIKE"; }