2011-06-09 51 views
0

我的用户可以通过地址立即搜索订单。我想要做的就是让他们能够用多种标准进行搜索。让他们按地址,城市,州等搜索。多个SQL搜索 - 或命令

我试过使用下面的代码,但它似乎并没有工作。

$sql = ("SELECT order_number, sitestreet FROM `PropertyInfo` WHERE `sitestreet` LIKE '%$street%' OR `sitecity` LIKE '%$city%' AND `user` LIKE '$user'"); 

$result = mysql_query($sql); 

我不认为它读取$ user中的值,因为它显示所有用户的所有订单。

如何才能使用多个serach值搜索订单?

谢谢!

+0

我想用户之类应该是一个用户=“用户”,而不是 – 2011-06-09 17:41:52

回答

3

环绕你或括号报表,因此形成一个顶层的情况下,用户是其他顶级的条件:

$sql = ' 
    SELECT 
    `order_number`, 
    `sitestreet` 
    FROM 
    `PropertyInfo` 
    WHERE 
    (
     `sitestreet` LIKE "%'.$street.'%" OR 
     `sitecity` LIKE "%'.$city.'%" 
    ) AND 
    `user` = '.$user; 

另外请注意,你想直接匹配到user列,使用=而不是LIKE。我假设$user是一个数字ID ...

0

如何试图像

$sql = ("SELECT order_number, sitestreet FROM PropertyInfo WHERE (sitestreet LIKE 
     '%$street%' OR sitecity LIKE '%$city%') AND user LIKE '$user'"); 
+0

我认为你在那里有一些额外的括号,男人...... – 2011-06-09 17:43:35

0

,并具有较高的位次比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' 
0

尝试:

$sql = (" 
    SELECT order_number, sitestreet 
    FROM `PropertyInfo` 
    WHERE (`sitestreet` LIKE '%$street%' 
    OR `sitecity` LIKE '%$city%') 
    AND `user` LIKE '$user'"); 

你应该组的OR放在一起。它的写法我相信它是在阅读它'如果街道匹配,忽略任何其他条件(或),否则城市和用户必须匹配。

也可为g molvi的点是好的,除非你正在寻找一个模式匹配,去与=

HTH