我的用户现在可以按地址搜索订单。我想做的是让他们能够使用多个标准进行搜索。让他们按地址,城市,州等搜索。
我尝试使用以下代码,但它似乎无法正常工作。
$sql = ("SELECT order_number, sitestreet FROM `PropertyInfo` WHERE `sitestreet` LIKE '%$street%' OR `sitecity` LIKE '%$city%' AND `user` LIKE '$user'");
$result = mysql_query($sql);
我认为它不会读取$ user中的值,因为它会显示所有用户的所有订单。
如何使用多个搜索值搜索订单?
谢谢!
答案 0 :(得分:3)
将OR语句包含在括号中,使其形成一个顶级条件,用户是另一个顶级条件:
$sql = '
SELECT
`order_number`,
`sitestreet`
FROM
`PropertyInfo`
WHERE
(
`sitestreet` LIKE "%'.$street.'%" OR
`sitecity` LIKE "%'.$city.'%"
) AND
`user` = '.$user;
另请注意,您希望与user
列直接匹配,请使用=
代替LIKE
。我假设$user
是数字ID ...
答案 1 :(得分:0)
如何尝试
$sql = ("SELECT order_number, sitestreet FROM PropertyInfo WHERE (sitestreet LIKE
'%$street%' OR sitecity LIKE '%$city%') AND user LIKE '$user'");
答案 2 :(得分:0)
AND的优先级高于OR(有关详细信息,请参阅http://dev.mysql.com/doc/refman/5.0/en/operator-precedence.html)。您需要将OR语句包装在括号中,以便在AND语句之前将其作为一个语句进行评估。
SELECT order_number, sitestreet
FROM `PropertyInfo`
WHERE (`sitestreet` LIKE '%$street%' OR `sitecity` LIKE '%$city%')
AND `user` LIKE '$user'
答案 3 :(得分:0)
尝试:
$sql = ("
SELECT order_number, sitestreet
FROM `PropertyInfo`
WHERE (`sitestreet` LIKE '%$street%'
OR `sitecity` LIKE '%$city%')
AND `user` LIKE '$user'");
您应该将OR组合在一起。它的编写方式我认为它是“如果街道匹配,忽略任何其他条件(OR)”,否则城市和用户都必须匹配。
另外,G molvi的观点很好,除非您正在寻找模式匹配,请使用=
HTH