2016-05-21 5 views
0

準備されたステートメントを使用してユーザーを認証しようとしています。問題があるのは、が常にnullを返すためです。私は、mysqliというクレイジークエリを使うとすべてうまく動作します。PHP mysqliは認証のためのステートメントを準備しました

私のコードをチェックしてください:私はvar_dumb($this->autheticate('admin', 'admin'))を行う際

public function autheticate($username, $password) 
    { 

     $query = "SELECT U.username, U.password FROM users as U WHERE U.username = ? AND U.password = ?"; 

     if($stmt = $this->conn->prepare($this->conn, $query)) 
     { 
      $stmt->bind('ss',$username, $password); 

      $stmt->execute(); 

      $stmt->close(); 

      return true; 
     } 

    // print_r($this->conn); 
    } 

iはNULLが、ユーザーがデータベースに存在し、接続がOKになってしまいます。

私はprint_r($this->conn);をuncoment iが出力を得る:mysqliのため

mysqli Object 
(
    [affected_rows] => 
    [client_info] => 
    [client_version] => 50547 
    [connect_errno] => 0 
    [connect_error] => 
    [errno] => 
    [error] => 
    [error_list] => 
    [field_count] => 
    [host_info] => 
    [info] => 
    [insert_id] => 
    [server_info] => 
    [server_version] => 
    [stat] => 
    [sqlstate] => 
    [protocol_version] => 
    [thread_id] => 
    [warning_count] => 
) 

答えて

0

Prepare methodは、あなたが使用したものを、これよりも異なる署名を持っています。あなたはそれを次のように呼ぶべきです:

if($stmt = $this->conn->prepare($query)) 

引数を渡すことなく渡す必要があります。それが最初のバグです。 Mureinikは別の問題を指摘した。

関連する問題