从 MYSQL 数据库检索后,PHP 中的哈希密码不是字符串

Hash Password in PHP not a string after retrieval from MYSQL database

我有登录部分的密码,使用$hash = password_hash($password, PASSWORD_DEFAULT);

密码以散列形式存储在数据库中,y$CaQON5WOEHcla58aBoIRKOmyYLBwtDHKFqk81y25.EGvjBqlF0W1W

我在登录页面查询数据库,查看用户邮箱是否在数据库中,确实如此。

我已经检查了 MySQL workbench 如果我使用的查询有效,它 returns 密码没问题。

但是,当我尝试在数据库中查询密码并将其分配给变量时,在回显该变量不是字符串时出现错误。

我试过了$verify = password_verify($password, $hash);但是,我也得到的错误是参数 2 必须是一个字符串。

那为什么我获取到的值不是字符串呢?以及如何检索正确的值?

这是我的查询:

   $sql_e2 = "SELECT password FROM users WHERE email='$email'";
   $hash = mysqli_query($mysqli, $sql_e2);

谢谢

我完成了对工作帐户和非工作帐户的工作和测试。

//query SQL for password
$sql_e2 = $mysqli->prepare("SELECT password FROM users WHERE email = ?");
$sql_e2->bind_param("s", $email);
$sql_e2->execute();
$result = $sql_e2->get_result();

//fetch row from result and assign value
$row = mysqli_fetch_row($result);
$hash = $row[0] ?? false;

// Print the result depending if they match
if (password_verify($password, $hash)) {
    echo 'Password Verified!';
} else {
    echo 'Incorrect Password!';
}

感谢各位指点