MySQLi подготовил заявление, возвращающее false - PullRequest
5 голосов
/ 02 января 2012

Я пытаюсь выполнить несколько запросов к моей базе данных, используя 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, и он успешно выдает набор результатов, поэтому я действительно не знаю, что не так.

1 Ответ

9 голосов
/ 02 января 2012

prepare возвращает false, если произошла ошибка. попробуй

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

и должна отображаться какая-то ошибка mysql.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...