搜索建议程序的简单 PHP/Ajax - 仅显示完整输入的数据库的结果

Simple PHP/Ajax for a search suggestion program - only displaying results from database typed in full

所以我的问题很简单。我是一个 PHP 初学者(一般来说是菜鸟程序员,3 个月前开始),我一直在关注一些关于如何构建 "search suggestion" 系统的教程,如果你想要什么,它会检查数据库重新输入就像其中的任何内容一样,并使用 AJAX.

实时显示结果

它正在部分工作。例如,当我输入完整的用户名时,它会显示结果。但当我输入一半或第一个字母时却不是。

<?php

    require 'connect.php';

    if (isset($_GET['searchText'])) {
        $searchText = $_GET['searchText'];
    }

    if($query = $db->prepare("SELECT user_name FROM users WHERE user_name LIKE ?")) {
        $query->bind_param('s', $searchText);
        $query->execute();

        $query->bind_result($searchTextResult);

        while ($query->fetch()) {
            echo $searchTextResult;
        }
    }

?>

此外,由于我是一个十足的菜鸟,所以我很乐意就代码提出任何建议,只是为了了解我是否总体上采用了良好的做法。我听说 binding 和 mysqli 被推荐,所以我试着坚持使用它们,我很少受到任何批评。

部分搜索参数的sql查询是这样的:

"select user_name FROM users WHERE user_name LIKE CONCAT('%',?,'%')"

感谢大家的所有回答。这是我第一次使用 Whosebug,我很喜欢。我希望有一天我能return帮个忙。

我所要做的就是在开始时将“%”添加到 $searchText var 中,然后一切 运行 顺利进行。

现在正确的代码如下:

<?php

require 'connect.php';

if (isset($_GET['searchText'])) {
    $searchText = $_GET['searchText'] . '%';
}

if($query = $db->prepare("SELECT user_name FROM users WHERE user_name LIKE ?")) {
    $query->bind_param('s', $searchText );
    $query->execute();

    $query->bind_result($searchTextResult);

    while ($query->fetch()) {
        echo $searchTextResult . "<br />";
    }
}

?>