如何修复此错误?这是我的代码。
$stmt = $this->conn->prepare("SELECT ngno, email, encrypted_password, name, user_type FROM `guide` WHERE email = ?");
$stmt->bind_param("s", $email);
if ($stmt->execute()) {
$user = $stmt->bind_result($ngno, $email, $encrypted_password, $name, $user_type)->fetch_assoc();
$stmt->close();
即时通讯使用远程sql数据库。我也在我的localhost上尝试了这个。但后来我得到错误,致命错误调用布尔
上的成员函数fetch_assoc()此代码使用get_result而不是bind_result。但我需要使用bind_result。任何帮助,将不胜感激。
编辑1:
我已将代码更改为以下内容,
$stmt = $this->conn->prepare("SELECT ngno, email, encrypted_password, name, user_type FROM `guide` WHERE email = ?");
$stmt->bind_param("s", $email);
if ($stmt->execute()) {
$stmt->bind_result($ngno, $email, $encrypted_password, $name, $user_type);
$user = $stmt->fetch_assoc();
$stmt->close();
if($encrypted_password == $password){
return $user;
}
} else {
return NULL;
}
我现在收到此错误。致命错误:调用未定义的方法mysqli_stmt :: fetch_assoc()
我的查询失败了吗?
答案 0 :(得分:1)
bind_result()
不返回对象,而是返回状态。这意味着它无法链接到该对象的另一个方法调用。你需要分两行完成。
有关详细信息,请参阅bind_result manual page。
答案 1 :(得分:0)
正如Julie Pelletier上面提到的,你不能链bind_result
,因为它不会返回一个对象。试试这个:
$stmt = $this->conn->prepare("SELECT ngno, email, encrypted_password, name, user_type FROM `guide` WHERE email = ?");
$stmt->bind_param("s", $email);
if ($stmt->execute()) {
$stmt->bind_result($ngno, $email, $encrypted_password, $name, $user_type);
$user = $stmt->fetch();
$stmt->close();
注意:强>
使用mysqli_stmt_execute()
时,必须使用mysqli_stmt_fetch()
函数在执行任何其他查询之前获取数据。