我有一个搜索 SQL 数据库的 php 表单。据说有八个表单字段,每个字段都是可选的。如果所有内容都留空,则查询将返回整个数据库。如果填写了一个字段,它将按一个字段过滤,两个它将按两个过滤,等等。在我想要搜索空条目的能力之前,我没有任何问题。例如,我想搜索客户有姓氏但没有主要电话号码的位置。我已经工作了几个小时,想不出一种简单的方法来实现这样的事情。我设想它是当您在搜索字段中键入关键字以在其他所有内容之上搜索该项目为空的位置。因此,如果我将“Smith”放入姓氏并将“NULL”放入电话号码,它将适用于我上面的示例。以下是我当前的代码。
$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";
如果无论如何要搜索 LIKE NULL 的位置,它也将是一个快速修复。