Mysql Select Code Doesn't work


Mysql Select Code Doesn't work

我有我的php/mysql SELECT代码,它不返回结果到我所期望的代码执行后。代码(选择):

$sql="SELECT *FROM advert 
       WHERE ad_Type = '%{$service}%' AND
            ad_Street_No like '%{$location}%' OR
            ad_Street_Name like '%{$location}%' OR
            ad_Suburb like '%{$location}%' OR
            ad_Postcode like '%{$location}%' OR
            ad_State like '%{$location}%'";

用户将在一个文本字段中使用街道名称、郊区、邮政编码和/或州等参数搜索位置和可用服务类型,然后从下拉菜单中选择一种服务类型。例如:"从表'advert'中选择服务类型= '例如牵引,挖掘'的记录,位于例如Cardiff NSW"。之类的。

我现在有2个记录在我的数据库:1. 服务:拖运,地点:Cardiff NSW2. 服务:挖掘,地点:Cardiff NSW

现在问题是:

您在"Cardiff"中搜索"拖运"服务,将返回2条记录(#1和#2)。您在"Cardiff"中搜索"Digging"服务,将返回2条记录(#1和#2)。如果您在"Cardiff NSW"中搜索任何一个服务,将返回0个结果。

我不知道如何解决这个问题。请帮帮我,伙计们。提前谢谢你。:(:(:()

首先,需要一些括号:

$sql="SELECT *FROM advert 
       WHERE ad_Type like '%{$service}%' AND
           ( ad_Street_No like '%{$location}%' OR
             ad_Street_Name like '%{$location}%' OR
             ad_Suburb like '%{$location}%' OR
             ad_Postcode like '%{$location}%' OR
             ad_State like '%{$location}%'" );

这将解决你的第一个问题。但是你还需要考虑你提供的是什么:例如,如果你只提供一个城镇,那么你根本不想在你的查询中包含ad_Type。

$sql = "SELECT * FROM advert
        WHERE ad_Type    like '%{$service}%' 
        AND (
          ad_Street_No   like '%{$location}%' 
          OR
          ad_Street_Name like '%{$location}%' 
          OR
          ad_Suburb      like '%{$location}%'
          OR
          ad_Postcode    like '%{$location}%' 
          OR
          ad_State       like '%{$location}%'
        )";