php - 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.";
?>
请问这有什么问题吗?
解决方案
email
字段需要一个字符串,您的查询中缺少转义引号。
$sql = "SELECT password from users WHERE email = \"$email\"";
推荐阅读
- sql - 从另一个表和静态值更新 SQL 行
- c - 在 C 中使用管道:两个子进程
- python - 使用切片列表从 DataFrame 中获取行
- php - 需要帮助解析 JSON 输出
- python - 是否可以使用 Python 检查是否已在 Windows 上打开文件夹?
- javascript - pm2 看文件夹里面,有问题
- python - 图像不响应不同的键 Pygame Python
- wpf - WPF 复选框不显示带有样式的复选标记和不带样式
- sql-server - 与 128 条记录相比,为什么我的 SQL Server 连接需要更长的时间,一个表中有 129 条记录?
- azure - Azure Function 1.x 到 2.x 升级 - GetQueryNameValuePairs 问题