php - 多字段查询搜索,无需全文搜索

标签 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 是 double
  • c 是一个整数
  • d 是一个整数
  • e 是 varchar(25)
  • a - e 都是用户输入

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

最佳答案

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

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

关于php - 多字段查询搜索,无需全文搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11166329/

相关文章:

php - laravel 中所有响应中的未知元标记

php - LAMP 错误 : session_start() failed: No space left on device (28), 但

mysql - 您的 SQL 语法在“:table_templates_boxes_to_pages”附近有错误

php - 多次上传php脚本并存入mysql数据库

php - 使用 wp 等短代码在 Laravel 5.1 中渲染数据

php - 查询结果在html中的布局

php mysql 命令不返回任何内容

MySQL正则表达式返回两列之间至少有一个单词匹配的所有记录

php - 将 Active Record 数据插入 Yii 的 CGRidView 小部件

mysql - 按升序对日期进行排序