我编写了一个代码来使用标签搜索广告。代码分隔(空格)用户输入的搜索字符串,并使用 LIKE 子句将每个单词与数据库中以逗号分隔的标签进行匹配。我得到了正确的结果。但我想要的是与搜索字符串单词匹配更多标签的行应该出现在顶部。
例如:- 第一行(在 db 中)的标签是“samung,mobile,phone”,第二行是“samsung,phone”,搜索字符串是“samsung mobile phone”,那么第一行应该首先出现有更多的比赛然后第二行。我如何使用 ORDER BY 来做到这一点。
我的代码是:-
<?php require_once("db_connect.php"); ?>
<form action="" method="POST">
<input type="text" name="searchtext" />
<input type="submit" name="submit" value="Search" />
</form>
<?php
if(isset($_POST["submit"]))
{
$searchquery = $_POST["searchtext"];
$searcharray = array();
$searcharray = explode(" ",$searchquery);
if(!isset($searcharray[1]))
$searcharray[1] = "XXXXXXXX";
if(!isset($searcharray[2]))
$searcharray[2] = "XXXXXXXX";
if(!isset($searcharray[2]))
$searcharray[2] = "XXXXXXXX";
if(!isset($searcharray[3]))
$searcharray[3] = "XXXXXXXX";
$query = "select * from search where tag LIKE '%$searcharray[0],%' OR tag LIKE '%$searcharray[1],%' OR tag LIKE '%$searcharray[2],%' OR tag LIKE '%$searcharray[3],%' ";
$result=mysql_query($query);
while($row = mysql_fetch_array($result))
{
echo $row["name"]. '<br>' ;
}