Mysql选择代码不起作用

时间:2011-07-21 12:59:15

标签: php mysql

我有我的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}%'";

用户将在一个文本字段中使用街道名称,郊区,邮政编码和/或状态等参数搜索位置和可用服务类型,然后从下拉菜单中选择一种服务。例如:“从表'广告'中选择记录,其中服务类型='例如拖运,挖掘',位于例如卡迪夫新南威尔士州”。 “那样的事情。

我现在在我的数据库中有2条记录: 1.服务:Hauling,地点:新南威尔士州卡迪夫 2.服务:挖掘,地点:新南威尔士州卡迪夫

现在的问题是:

您在“卡迪夫”中搜索“牵引”服务,将返回2条记录(#1和#2)。 您在“卡迪夫”中搜索“挖掘”服务,将返回2条记录(#1和#2)。 您搜索“Cardiff NSW”中的任何一项服务,将返回0结果。

我不知道如何解决这个问题。请帮帮我们。先感谢您。 :( :( :(

祝你好运

2 个答案:

答案 0 :(得分:3)

首先,您需要一些括号:

$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。

答案 1 :(得分: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}%'
        )";