php / mysql搜索多个值

时间:2011-04-22 20:01:35

标签: php mysql search

我有一个带有(国家,城市,地区,已发布)字段的桌子。我有一个搜索表单,有人可以进入国家或城市或地区。我希望得到所有已发布的房屋= 1,并且任何搜索字词都与其任何字段相匹配。

这是我到目前为止所做的:

SELECT * FROM homes 
WHERE published = 1 
AND 
LOWER(country) LIKE '$search%' 
OR 
LOWER(city) LIKE '$search%'
OR
LOWER(area) LIKE '$search%'

问题在于它返回已发布= 0 ...

的房屋

2 个答案:

答案 0 :(得分:3)

我建议使用括号。

SELECT * FROM homes 
WHERE published = 1 
AND
(
 LOWER(country) LIKE '$search%' 
 OR 
 LOWER(city) LIKE '$search%'
 OR
 LOWER(area) LIKE '$search%'
)

答案 1 :(得分:2)

SELECT * 
FROM   homes 
WHERE  published = 1 
       AND ( country LIKE '$search%' 
              OR city LIKE '$search%' 
              OR area LIKE '$search%' ) 

就像已经不区分大小写的东西一样,所以你不需要它。

默认字符集和排序规则是latin1和latin1_swedish_ci,因此非二进制字符串比较默认情况下不区分大小写。这意味着如果使用col_name LIKE'a%'进行搜索,则会获得以A或a开头的所有列值。 http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html