我想进行sql搜索
现在我正在使用这个
$term="red sky";
$query=explode(' ', $term);
$sql = "SELECT * as result FROM `disk` WHERE ";
$a=0;
foreach ($query as $part)
{
$part=mysqli_real_escape_string($con, $part);
$a++;
if ($a==1)
{
$sql .= " title like '%".$part."%'";
}
else
{
$sql .= " and title like '%".$part."%'";
}
}
$sql = $sql." order by time desc";
$i=0;
if ($term!="")
{
$result = mysqli_query($con, $sql);
$row = mysqli_fetch_array($result);
}
因此,结果显示为:
我想以某种方式订购它,以便它首先显示“红色天空”,其他结果相同,以便他们可以自行安排。
第二件事---这种搜索有点慢,我想使其更快。请通过制作新的更快的脚本或在此脚本中进行更新来帮助我。 (必须相同但要更快地工作)
有关更多详细信息,请评论。很难解释
答案 0 :(得分:0)
对不起,您的问题还不够清楚。 我认为这段代码应该可以快速渲染。
$sql = ""; $add = "";
$term="red sky";
$query=explode(' ', $term);
foreach ($query as $part)
{
$add .= " title like '%".$part."%' and";
}
$add .= substr($add,0,-3);
$sql = "SELECT * as result FROM `disk` WHERE".$add."order by time desc";
if ($term!="")
{
$result = mysqli_query($con, $sql);
$row = mysqli_fetch_array($result);
}
如果要在red
和sky
上获得特定结果,则应使用 IN 子句,而不要使用 Like 。
示例:
$sql = "";$new= [];
$term="red sky";
$query=explode(' ', $term);
foreach($query as $part)
{
$new[].= "'".$part."'";
}
$term=implode(',', $new);
$sql = "SELECT * FROM `disk` WHERE title IN(".$term.") order by time desc";
if ($term!="")
{
$result = mysqli_query($con, $sql);
$row = mysqli_fetch_array($result);
}