首页 > 解决方案 > php SELECT查询在mysqli面向对象中的fetch_assoc的while循环中给出错误

问题描述

我正在编写一个代码,它使用密码验证比较用户密码并相应地输出结果。另外,在比较之前,我正在从数据库中打印一个散列密码。但是,我收到错误Fatal error: Call to a member function fetch_assoc() on boolean这是DbConnect.php主文件中包含的文件

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "task_manager";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
 die("Connection failed: " . $conn->connect_error);
} 
?>

这是有错误的主文件

<?php
include "DbConnect.php";

 $email = "joshiashish191@gmail.com";
 $user_password = "123456";

 $sql = "SELECT password from users WHERE email = $email";
 $result = $conn->query($sql);


    while($row = $result->fetch_assoc()) {
    echo $row["password"];
    }

 if(password_verify($user_password, $result)){
     echo "password matches!";
 }
 else
     echo "Passwords do not match.";
?>

请问这有什么问题吗?

标签: phpmysqli

解决方案


email字段需要一个字符串,您的查询中缺少转义引号。

$sql = "SELECT password from users WHERE email = \"$email\"";

推荐阅读