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