[英]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.