我的搜索引擎没有显示任何错误,但它不显示任何结果


My search engine shows no errors yet it displays no results

我想做一个搜索引擎。我得到了以下代码。编写代码是为了修剪空格、计算行数和匹配结果的数量,以及一点 sql 注入证明。所有这些属性都有效,但搜索本身不显示任何结果。我也没有收到错误报告。我已经审查这段代码一段时间了,我只是找不到出了什么问题。我知道这是 mysql 并且已弃用,但我认为它应该仍然有效。它不起作用的原因是因为 Mysql 已弃用还是你能找到我犯的错误?希望我的问题足够清楚。

该指数:

<form action = "" method="POST">
    <p>
        <input type="Text" name="keywords" /> <input type="submit" value="Search" />
    </p>
</form>
<?php
if (isset($_POST['keywords'])) {
    $keywords = mysql_real_escape_string(htmlentities(trim($_POST['keywords'])));
    $errors = array();
    if (empty($keywords)) {
        $errors[] = 'Please enter a search term';
    } else if (strlen($keywords)<3) {
        $errors[] = 'Your search term must be three or more characters';
    } else if (search_results($keywords) === false) {
        $errors[] = 'Your search for '. $keywords .' returned no results';
    }
    if (empty($errors)) {
        echo '<p>Your search for <strong>', $keywords ,'</strong> returned <strong> </strong> results</p>';
    foreach($results as $result) {
            echo '<p> <strong>', $result['Categorie'],' <br> ', $result['SerieNummer'] ,' <br> ', $result['MacAdress'] ,'</a> </p>';
        }
    } else {
      foreach($errors as $error) {
      echo $error, '</br>';
    }
}
}
?>

配置:

<?php
include 'db.inc.php';

function search_results($keywords) {
    $returned_results = array();
    $where = "";
    $keywords = preg_split('/['s]+/', $keywords);
    $total_keywords = count($keywords);
    foreach($keywords as $key=>$keyword) {
        $where .= "`keywords` LIKE '%$keyword%'";
      if ($key != ($total_keywords -1)) {
        $where .= " AND ";
      }
    }
    $results = "SELECT `calleridname`, LEFT(`calleridnum`, 70) as `calleridnum`, `callapiid` FROM `callflow` WHERE $where";
    $results_num =  ($results = mysql_query($results)) ? mysql_num_rows($results): 0;
    if ($results_num === 0) {
        return false;
    } else {
        while ($results_row = mysql_fetch_assoc($results)) {
            $returned_results[] = array(
                            `calleridname` => $results_row['calleridname'],
                            `calleridnum` => $results_row['calleridnum'],
                            `callapiid` => $results_row['callapiid'],
            );
        }
        return $returned_results;
    }
    }

?>

问题是由您在此处使用单引号引起的:

'%$keyword%'

在 SQL 查询中。将其更改为"%$keyword%",它将起作用!

此外在此行中,删除最后一个,

`callapiid` => $results_row['callapiid'],