【发布时间】:2012-01-31 21:37:17
【问题描述】:
我正在尝试使用 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 中自行运行了查询,并且成功生成了结果集,所以我真的不知道出了什么问题。
【问题讨论】:
-
是哪个
bind_param()调用的?第一个用于密码还是第二个用于user_id字段?为什么不只使用一个查询?
标签: php mysqli prepared-statement