MySQLi 准备好的语句返回 false

2024-03-19

我正在尝试使用 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 http://php.net/mysqli_prepare如果发生错误则返回 false。尝试

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQLi 准备好的语句返回 false 的相关文章

随机推荐