我正在尝试为我的网站创建一个简单的搜索页面,但是不知道如何在不使用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()
作为使查询和结果不区分大小写的一种方法。
我希望结果按它们在数据库中显示的顺序排列,这是有道理的,并且正在发生,但是我该怎么做对它们进行排序?
答案 0 :(得分:0)
我应该看到您的数据库结构,但是假设有一个相关性列,那么您只需要通过这种方式使用键盘顺序来进行查询:
$query = "SELECT * FROM games ORDER BY relevence ASC"; //Or you might use DESC depending on what kind of sort you need.