当只有 1 个匹配项时搜索多个关键字的条形码

Search Bar coding for multiple keywords when only 1 matches

所以我浏览了互联网并实际注册了这个网站,因为我发现我的大多数 google 搜索都把我带到了这里。我几乎完成了我的网站制作,我使用了一个扩展的模板。它上面有一个无法正常工作的搜索栏。我大部分时间都在使用它。我遇到的问题是,当我输入 MySQL 的关键字时,它工作正常,当我输入一个我知道不存在的单独关键字时,它会给出正确的无结果响应。现在我的问题是,当您将两者混在一起时,数据库会出错。这是我到目前为止整理的 php 代码...

    <?php
$db = mysqli_connect('host','username','password')
or die('Error connecting to MySQL server.');
$keyword = $_GET['keyword'];
$terms = explode(" ", $keyword);

$query = "SELECT * FROM searchresults WHERE ";

foreach ($terms as $each) {

    $i=0;
    if ($i == 0)
    $query .= "pagebody LIKE  '%$each%' ";
    else
    $query .= " OR pagebody LIKE  '%$each%' ";

}

mysqli_query($db, $query) or die('Error querying database.');

$result = mysqli_query($db, $query);
$row = mysqli_fetch_array($result);


if ($row > 0) {

    while ($row = mysqli_fetch_array($result)) {
        $id = $row['id'];
        $title = $row['title'];
        $description = $row['description'];
        $pagebody = $row['pagebody'];
        $link = $row['link'];


        echo "<h2><a href='$link'>$title</a></h2></br>
        $description<br/><br/>";
    }
}   else 
echo "No results found for.\"<b>$keyword</b>\"";
?>

如有任何帮助,我们将不胜感激。我需要弄清楚如何制作它,以便如果无法识别任何关键字,它就不会出错。

这不会解决您转义用户输入的问题,而是在解决搜索错误​​时回答您的问题;您的原始代码在 foreach 循环的每次迭代中保持 $i 等于 0,因此查询结果为:

SELECT * FROM searchresults WHERE pagebody LIKE '%$each%' pagebody LIKE '%$each%' pagebody LIKE '%$each%'

您需要修改以下几行:

$query = "SELECT * FROM searchresults WHERE ";

foreach ($terms as $each) {

    $i=0;
    if ($i == 0)
    $query .= "pagebody LIKE  '%$each%' ";
    else
    $query .= " OR pagebody LIKE  '%$each%' ";

}

将其更改为:

$i=0;
$query = "SELECT * FROM searchresults WHERE";

foreach ($terms as $each) {
  if($i == 0){
    $query .= " pagebody LIKE '%$each%'";
  }else{
    $query .= " OR pagebody LIKE  '%$each%'";
  }
$i++;
}