2016-11-16 46 views
0

我之前使用过LIKE语句,并且花费年龄重写语句,不确定我做错了什么。查询运行时,它会显示数据库中的所有记录,当它显示更窄的列表时。SQL Like Statement显示所有结果

使用LIKE语句的原因是通过允许“属性名称”的一部分使我的高级搜索工具更高效。

SQL语句:

SELECT 
    * 
FROM 
    properties 
WHERE 
    PropertyName LIKE '%$PropertyName%' 
    OR PropertyLocation LIKE '%$PropertyLocation%' 
    OR PropertyType LIKE '%$PropertyType%' 
    OR PropertyBeds='$PropertyBeds' 
    OR PropertyRate >= '$PropertyRate1' 
    AND PropertyRate <= '$PropertyRate2' 

请注意:声明不工作,而无需使用像和通配符。

+1

编辑你正在使用的数据库的问题和标签。另外,显示变量的值。 –

回答

1

你的条件是:

WHERE PropertyName LIKE '%$PropertyName%' or 
     PropertyLocation LIKE '%$PropertyLocation%' or 
     PropertyType LIKE '%$PropertyType%' or 
     PropertyBeds = '$PropertyBeds' or 
     PropertyRate >= '$PropertyRate1' and PropertyRate <= '$PropertyRate2' 

如果PropertyNamePropertyLocation,或PropertyType是空字符串,那么你将返回所有行。这是我第一次猜测发生了什么。

也许你想AND作为连接器而不是OR

+0

谢谢,我刚刚测试过它,这就是发生了什么事。我希望允许用户从高级搜索中搜索他们想要的内容,因此我希望语句允许使用空字符串。你有什么建议做什么? –

+0

@JoeCobain。 。 。你应该问*另一个*问题,更详细地解释当设置不同的变量时你想要发生什么。 –