如何使用PHP和MySQLI按相关性排序结果?

时间:2019-04-20 15:45:33

标签: php mysql

我正在尝试为我的网站创建一个简单的搜索页面,但是不知道如何在不使用strpos()之类的条件下搜索数据库,该数据库将按查询顺序列出包含查询的所有结果数据库。

我尝试使用strpos(),但是我只得到包含查询的结果列表。是的,我知道这就是它的作用,但是更好的解决方案是什么?

现在,我的PHP如下所示

$dbc = mysqli_connect ('localhost', 'username', 'password', 'DBName')
        or die ('Error connecting to the database.');

//Get and cleanse the query
$q = mysqli_real_escape_string($dbc, strtolower($_GET['q']));
$query = "SELECT * FROM games";
$result = mysqli_query($dbc, $query)
        or die('Error querying the database');

while($row = mysqli_fetch_array($result)) {
    $name = strtolower($row['name']);
    $img = $row['img'];
    $description = $row['description'];
    $url = $row['URL'];
    $creator = $row['creator'];

    if (strpos($name, $q) !== false){
        $name = $row['name'];
        echo "
            <div class='result'>
            <a class='result-link' href='$url'>
            <p class='name'>$name</p>
            </a>
            <p class='url'>$url</p>
            <p class='description'>$description</p>
            </div>
            \n";
    }
}

mysqli_close($dbc);

请注意,我使用strtolower()作为使查询和结果不区分大小写的一种方法。

我希望结果按它们在数据库中显示的顺序排列,这是有道理的,并且正在发生,但是我该怎么做对它们进行排序?

1 个答案:

答案 0 :(得分:0)

我应该看到您的数据库结构,但是假设有一个相关性列,那么您只需要通过这种方式使用键盘顺序来进行查询:

$query = "SELECT * FROM games ORDER BY relevence ASC"; //Or you might use DESC depending on what kind of sort you need.