php - MySQLi 准备语句返回 false

标签 php mysqli prepared-statement

我正在尝试使用 MySQLi 在我的数据库上运行多个查询。这是我的代码:

$stmt = $mysqli->prepare('SELECT password FROM `users` WHERE username=? LIMIT 1');
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->bind_result($hashedPass);
$stmt->fetch();

/* Check the passwords match */
$pwdHasher = new PasswordHash(8, FALSE);
if(!$pwdHasher->CheckPassword($password, $hashedPass))
    exit;

$stmt = $mysqli->prepare('SELECT u_id FROM `users` WHERE username=? LIMIT 1');
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->bind_result($u_id);
$stmt->fetch();

但是当代码运行时我得到这个错误:

Fatal error: Call to a member function bind_param() on a non-object in C:\wamp\www\ajax\login.php on line 42

我已经检查过数据库字段是否存在,所以不是那个。第一个查询有效,但似乎是第二个查询无效。我已经在 phpMyAdmin 中自行运行查询并成功生成了结果集,所以我真的不知道出了什么问题。

最佳答案

prepare如果发生错误,则返回 false。尝试

$stmt = $mysqli->prepare('SELECT u_id FROM `users` WHERE username=? LIMIT 1');
if ($stmt === FALSE) {
    die ("Mysql Error: " . $mysqli->error);
}

并且应该显示一些 mysql 错误。

关于php - MySQLi 准备语句返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8702241/

相关文章:

php - Xdebug 无法连接到客户端,从哪里开始调试调试器?

PHP:如何在 php 中获取以字节为单位的动态生成图像的大小?

php - 将 mysql 数据库从一台服务器复制到另一台 PHP cron 作业自动化

php - 如何让用户注册后自动登录

php - 使用 PHP 的 mysqli 执行准备好的语句的正确和最简单的方法是什么?

java - 准备好的语句失败(带有错误消息!)

php - 多数据库查询感知性能

php - 找不到类 mysqli

php - 时间戳和表单输入日期/时间

jpa - 如何在 JPA 中使用准备好的语句