这是正确获取结果的方法
$param = "%{$_POST['user']}%";
$stmt = $db->prepare("SELECT id, username FROM users WHERE username LIKE ?");
$stmt->bind_param("s", $param);
$stmt->execute();
$result = $stmt->get_result();
$data = $result->fetch_all(MYSQLI_ASSOC);
请注意,从 PHP 8.2 开始(带有8.0+ 的后备替换 https://stackoverflow.com/a/76934685/285587) 可以使用更短的代码
$sql = "SELECT id, username FROM users WHERE username LIKE ?";
$result = $db->execute_query($sql, ["%{$_POST['user']}%"]);
$data = $result->fetch_all(MYSQLI_ASSOC);
或者,如果您更喜欢旧的fetch
and bind_result
语法,你还可以这样做:
$param = "%{$_POST['user']}%";
$stmt = $db->prepare("SELECT id,username FROM users WHERE username LIKE ?");
$stmt->bind_param("s", $param);
$stmt->execute();
$stmt->bind_result($id,$username);
while ($stmt->fetch()) {
echo "Id: {$id}, Username: {$username}";
}
我直接从手册中得到了答案here https://secure.php.net/manual/en/mysqli-stmt.fetch.php and here https://secure.php.net/manual/en/mysqli-stmt.get-result.php.