PHP查询多次搜索

时间:2016-09-22 13:00:27

标签: php mysql

对于我的php sql搜索查询,我有5种不同的搜索条件(从最重要到最不重要)。

例如:

  1. (最重要):姓名
  2. 区域
  3. 颜色
  4. 形状
  5. (最不重要):时间
  6. 对于查询,我有以下内容:

    $ajax_data = $_POST['data']; 
    $name      = $ajax_data [0]; 
    $area      = $ajax_data [1]; 
    $color     = $ajax_data [2]; 
    $shape     = $ajax_data [3]; 
    $time      = $ajax_data [4]; 
    
    $option  = "WHERE name = '$name' AND area = '$area' AND color = '$color' AND shape = '$shape' AND time = '$time'"; //Not complete
    $query   = "SELECT * FROM $table $option limit 10;
    

    这是我想要做的。

    使用5个标准(名称,区域,颜色,形状和时间),我想进行查询搜索以查找大多数相关数据,这意味着它应该与搜索条件匹配,以获得最佳结果。

    例如,以下搜索条件是通过ajax发送的:

    Ajax search criteria: Earth, Canada, White, Square, Today
    

    然后,我想查询相同的标准。

    但是,有时候不存在相同的数据。

    在它没有的情况下,我想删除最不重要的标准并进行另一次搜索,依此类推,直到我得到10个结果。

    我有什么建议可以为此编写查询吗?

1 个答案:

答案 0 :(得分:1)

您是否可以尝试这样的方法,在表格中建立一个跟踪匹配数量的数字字段,然后按此字段降序并在结果处应用LIMIT?

为伪代码道歉,它应该足以让你有这个想法。

$option  = "WHERE name = '$name' AND area = '$area' AND color = '$color' AND shape = '$shape' AND time = '$time'"; //Not complete
$order = "ORDER BY matchQuality DESC";


$query   = "SELECT *, IF(name = '$name', 1, 0) + IF(area = '$area', 1, 0) + IF(color = '$color', 1, 0) + IF(shape = '$shape', 1, 0) + IF(time = '$time', 1, 0) matchQuality FROM $table $option $order limit 10;";

如果您有任何进一步的要求,请告诉我。

此致

詹姆斯