2012-06-23 109 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',并且在取得的结果中,你必须为你选择最好的。 –