2011-06-09 48 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