2016-05-05 3 views
1

как исправить эту ошибку? это мой код.Неустранимая ошибка: вызов функции-члена fetch_assoc() для не-объекта

$stmt = $this->conn->prepare("SELECT ngno, email, encrypted_password, name, user_type FROM `guide` WHERE email = ?"); 

    $stmt->bind_param("s", $email); 

    if ($stmt->execute()) { 
     $user = $stmt->bind_result($ngno, $email, $encrypted_password, $name, $user_type)->fetch_assoc(); 
     $stmt->close(); 

im Использование удаленной базы данных sql. Я также попробовал это на своем локальном хосте. но затем я получаю ошибку, фатальный вызов ошибки функции-члена fetch_assoc() на boolean

этот код работал с get_result вместо bind_result. но мне нужно использовать bind_result. Любая помощь будет оценена по достоинству.

EDIT 1:

я изменил код к следующему,

$stmt = $this->conn->prepare("SELECT ngno, email, encrypted_password, name, user_type FROM `guide` WHERE email = ?"); 

    $stmt->bind_param("s", $email); 

    if ($stmt->execute()) { 
     $stmt->bind_result($ngno, $email, $encrypted_password, $name, $user_type); 
     $user = $stmt->fetch_assoc(); 
     $stmt->close(); 

     if($encrypted_password == $password){ 
      return $user; 
     } 
    } else { 
     return NULL; 
    } 

я получаю эту ошибку прямо сейчас. Неустранимая ошибка: вызов неопределенного метода mysqli_stmt :: fetch_assoc()

Произошел ли мой запрос?

+0

Проверьте, установлен ли '$ email'. –

ответ

1

bind_result() не возвращает объект, а вместо этого статус. Это означает, что он не может быть привязан к другому вызову метода из этого объекта. Вам нужно сделать это на двух отдельных строках.

Подробнее см. На bind_result manual page.

0

Как Джулия Пеллетье, упомянутая выше, вы не можете найти цепочку bind_result, так как она не возвращает объект. Попробуйте это:

$stmt = $this->conn->prepare("SELECT ngno, email, encrypted_password, name, user_type FROM `guide` WHERE email = ?"); 

$stmt->bind_param("s", $email); 

if ($stmt->execute()) { 
    $stmt->bind_result($ngno, $email, $encrypted_password, $name, $user_type); 
    $user = $stmt->fetch(); 
    $stmt->close(); 

Примечание: При использовании mysqli_stmt_execute() функция mysqli_stmt_fetch() должна быть использована для извлечения данных перед выполнением каких-либо дополнительных запросов.

+0

благодарит за ответ. Я попробовал это. теперь я получаю сообщение об ошибке. Вызовите undefined метод mysqli_stmt :: fetch_assoc(). мой запрос не работает? Я тестировал как электронную почту, так и пароль с isset. значения верны. –

Смежные вопросы