Php 如何选择以字符串开头的MYSQL数据库的所有条目

Php 如何选择以字符串开头的MYSQL数据库的所有条目,php,mysqli,Php,Mysqli,我正在尝试选择在开始处包含特定字符串的所有db条目。这是我目前的代码: $keyword=htmlspecialchars($\u POST[“keyword”]); $keyword=str_replace(“,”,$keyword); 如果($keyword!=“”){ $db=新数据库(“本地主机”、“根”、“测试”); $db->connect(); $query=“从用户名为“”的登录名中选择*。$keyword。“%”; $res=$db->execCommand($query);

我正在尝试选择在开始处包含特定字符串的所有db条目。这是我目前的代码:

$keyword=htmlspecialchars($\u POST[“keyword”]);
$keyword=str_replace(“,”,$keyword);
如果($keyword!=“”){
$db=新数据库(“本地主机”、“根”、“测试”);
$db->connect();
$query=“从用户名为“”的登录名中选择*。$keyword。“%”;
$res=$db->execCommand($query);
$res=mysqli\u fetch\u assoc($res);
如果($res[“username”]!=“”){
echo json_编码(数组_值($res));
}
$db->disconnect();
}
它工作正常,但array/json只包含一个db条目


有人知道如何修复它吗?

首先,您只需要调用
$res=mysqli\u fetch\u assoc($res)一次,因此只返回一行

第二,您正在用第一行的数组覆盖
$res
结果集,因此如果您试图读取更多行,您将遇到问题

您需要添加while循环并为变量指定唯一名称:

$keyword = htmlspecialchars($_POST["keyword"]);
$keyword = str_replace(" ","",$keyword);

if($keyword != ""){
    $db = new Database("localhost","root","","test");
    $db->connect();
    $query = "SELECT * FROM login WHERE username LIKE '".$keyword."%'";
    $res = $db->execCommand($query);

    while($row = mysqli_fetch_assoc($res)) {
        if($row["username"] != ""){
            echo json_encode(array_values($row));
        }
    }

    $db->disconnect();
}

真的非常感谢你:)