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'
";

现在

  • a 是一个 varchar(20)
  • b 是双倍的
  • c 是一个整数
  • d 是一个整数
  • e 是一个 varchar(25)
  • a - e 都是用户输入

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

4

1 回答 1

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%'  
";  

如果所有搜索条件都匹配,上述解决方案只会为您提供结果。
如果您正在寻找至少一个匹配的,请使用ORover 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%'  
";  

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

于 2012-06-23T10:33:09.923 回答