通过SQL搜索

时间:2018-07-07 10:29:03

标签: php sql search

我想进行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);
    }

因此,结果显示为:

  1. vredy tskyi
  2. 红色的天空
  3. 星空
  4. 红色的天空

我想以某种方式订购它,以便它首先显示“红色天空”,其他结果相同,以便他们可以自行安排。

第二件事---这种搜索有点慢,我想使其更快。请通过制作新的更快的脚本或在此脚本中进行更新来帮助我。 (必须相同但要更快地工作)

有关更多详细信息,请评论。很难解释

1 个答案:

答案 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);
}

如果要在redsky上获得特定结果,则应使用 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);
}