2012-06-23 154 views
0

查詢看起來是這樣的:多個領域查詢搜索

$query = " 
SELECT $field1, $field2, $field3, $field4, $field5 
FROM . $usertable 
WHERE $field1 = '$a' 
    AND $field2 = '$b' 
    AND $field3 = '$c' 
    AND $field4 = '$d' 
    AND $field5 = '$e' 
"; 

現在

  • 一個是一個varchar(20)
  • b爲雙
  • c是an int
  • d是int
  • e是varchar(25)
  • A - E的所有用戶輸入

全文搜索不是一個選項,作爲搜索必須返回一個結果即使不完全匹配。

+1

請格式化您的代碼,以便人們可以閱讀它。另外,你的問題對我來說有點不足。我所知道的是,用戶提交所有的字段進行搜索(沒有評論使用這種技術,如果它應該使用...),並且全文搜索不是一個選項。和...? –

+0

使用'LIKE'有問題嗎? –

回答

2

使用LIKE

$query = " 
SELECT $field1, $field2, $field3, $field4, $field5 
FROM $usertable 
WHERE $field1 LIKE '%$a%' 
    AND $field2 LIKE '%$b%' 
    AND $field3 LIKE '%$c%' 
    AND $field4 LIKE '%$d%' 
    AND field5 LIKE '%$e%' 
"; 

以上解決方案只是給你的結果,如果所有的搜索條件匹配。
如果您正在尋找至少有一個匹配,請使用OR而不是AND

$query = " 
SELECT $field1, $field2, $field3, $field4, $field5 
FROM $usertable 
WHERE $field1 LIKE '%$a%' 
    OR $field2 LIKE '%$b%' 
    OR $field3 LIKE '%$c%' 
    OR $field4 LIKE '%$d%' 
    OR field5 LIKE '%$e%' 
"; 

在上述兩種情況下,如果沒有任何搜索條件匹配,查詢可能不會返回結果。
結果將是一個空集。

+0

對不起Jared。而在這種情況下,Ravinder LIKE功能不會返回結果。請允許我來闡述: 比方說,這個查詢尋找,我們應該去今晚的晚餐爲例: – CWF010

+0

A =類型的食物 B =價格 C =多少人 d =從位置 Ë距離=環境類型 現在,如果查詢在所有5個字段中找不到完全匹配,它將不返回任何結果。不幸的是,在這種情況下LIKE功能將不起作用。 – CWF010

+0

@ CWF010嗯,我在發佈我的答案時意識到了這個問題。我只是給了全文搜索的替代方案。我們可以在'AND'上使用'OR',並且在取得的結果中,你必須爲你選擇最好的。 –