Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按相关性排序_Php_Mysql - Fatal编程技术网

Php 按相关性排序

Php 按相关性排序,php,mysql,Php,Mysql,到目前为止,这允许我搜索一个或多个字段,如姓氏和/或出生日期。我想做的也是按相关性排序,因为它目前按主ID排序(例如:如果我搜索smith,我希望smith排在klingensmith之前) 我在这方面真的是个新手,走到这一步需要咬牙切齿,所以请像我5岁一样解释。我已经试过了: $fields = array('surname', 'firstname', 'maiden', 'birth', 'death', 'obittext'); $conditions = array(); forea

到目前为止,这允许我搜索一个或多个字段,如姓氏和/或出生日期。我想做的也是按相关性排序,因为它目前按主ID排序(例如:如果我搜索smith,我希望smith排在klingensmith之前)

我在这方面真的是个新手,走到这一步需要咬牙切齿,所以请像我5岁一样解释。我已经试过了:

$fields = array('surname', 'firstname', 'maiden', 'birth', 'death', 'obittext'); $conditions = array();

foreach($fields as $field){

    if(isset($_POST[$field]) && $_POST[$field] != '') {
        $conditions[] = "`$field` LIKE '%" . $_POST[$field] . "%'";
    }
}

$sql = "SELECT * FROM obits ";
if(count($conditions) > 0) {
    $sql .= "WHERE " . implode (' AND ', $conditions); 
}
$result = mysqli_query($con, $sql);

它刚刚把它弄坏了。我怀疑我需要添加另一个条件,但我不知道是什么或在哪里。非常感谢,并向所有理解这些内容的人表示敬意。

您是否尝试过“按姓氏顺序描述”而不是“按相关性顺序描述”?这确实产生了不同的结果,并且没有破坏它。如果有人只使用一个搜索字段,但它对多字段搜索效果很好,我不太确定这是否是我想要的结果。然后尝试使用“或”而不是“和”;)如果有人在搜索smith和1910,我想,我不确定我说的是否正确,我希望它按搜索者使用的字段排序搜索。因此,如果他们使用姓氏,请按姓氏排序。如果他们使用的是名字,按名字排序。你试过“按名字排序,姓氏排序”而不是“按相关性排序”吗?这确实产生了不同的结果,并且没有破坏它。如果有人只使用一个搜索字段,但它对多字段搜索效果很好,我不太确定这是否是我想要的结果。然后尝试使用“或”而不是“和”;)如果有人在搜索smith和1910,我想,我不确定我说的是否正确,我希望它按搜索者使用的字段排序搜索。因此,如果他们使用姓氏,请按姓氏排序。如果他们用的是第一个名字,按这个顺序排列。
$result = mysqli_query($con, $sql, ' ORDER BY relevance DESC ');