簡體   English   中英

PHP mysqli准備用於身份驗證的語句

[英]PHP mysqli prepared statement for authentication

我試圖使用准備好的語句來驗證用戶身份。 問題是因為stmt總是返回null 當我使用經典的mysqli查詢時,一切正常。

檢查我的代碼:

 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);
    }

當我做var_dumb($this->autheticate('admin', 'admin'))我得到NULL但用戶存在於數據庫中並且連接正常。

當我不喜歡print_r($this->conn); 我得到輸出:

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] => 
)

mysqli的Prepare方法具有與您使用的簽名不同的簽名。 您應該以我認為的以下方式調用它:

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

而不將連接作為參數傳遞。 那是第一個錯誤。 Mureinik指出了另一個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM