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