没有全文搜索的多字段查询搜索

时间:2012-06-23 02:32:59

标签: php mysql

查询看起来像这样:

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

现在

  • a是varchar(20)
  • b是双
  • c是一个int
  • d是一个int
  • e是varchar(25)
  • a - e是所有用户输入

全文搜索不是一个选项,因为搜索必须始终返回结果,即使不是完全匹配。

1 个答案:

答案 0 :(得分: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%'  
";  

在上述两种情况下,如果没有匹配任何搜索条件,查询可能不会返回结果 结果将是一个空集。