如何使用PHP和MySQLI按relevence排序结果?

如何使用PHP和MySQLI按relevence排序结果?,php,mysql,Php,Mysql,我正在尝试为我的网站创建一个简单的搜索页面,但不知道如何在不使用strpos之类的东西的情况下搜索我的数据库,strpos会按查询在数据库中列出的顺序返回包含查询的所有结果 我已经尝试使用strpos,但是我只得到一个包含查询的结果列表。是的,我知道这正是它所做的,但更好的解决办法是什么 现在,我的PHP如下所示 $dbc = mysqli_connect ('localhost', 'username', 'password', 'DBName') or die ('Error

我正在尝试为我的网站创建一个简单的搜索页面,但不知道如何在不使用strpos之类的东西的情况下搜索我的数据库,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使查询和结果不区分大小写


我希望结果会按照它们在数据库中显示的顺序显示,这是有意义的,而且正在发生,但是我能做些什么来对它们进行排序呢?

我应该看到您的数据库结构,但是假设有一个relevence列,那么您只需通过以下方式使用keywork order进行查询:

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

这是一个简单的ORDER BY语句?请在SQL中查找全文搜索。这取决于您希望如何对结果进行排序。此外,取出所有数据库记录,然后检查它们是否与查询字符串匹配也不是一个好主意。你可能想读一读,或者你每试一次,@nahanil应该想到这一点