![](/img/trans.png)
[英]Convert from mysqli_query using mysql password() function to a prepared statement in php
[英]Convert from mysqli_query to mysqli prepared statement using mysql PASSWORD function
除了一個查詢之外,我已將我的網站從 mysql 轉換為 mysqli 准備好的語句。 我無法弄清楚的查詢是:
$sql = "SELECT customerID FROM customer WHERE customerEmail = '$loginEmailAddress' AND customerPassword = PASSWORD('$loginPassword');";
$result = mysqli_query($mysqli, $sql);
這工作正常。 當我嘗試制作 mysqli 准備好的語句時,問題是 mysql PASSWORD 函數。 甚至有可能轉換這個嗎?
我試過這樣的事情:
$loginPassword = PASSWORD($loginPassword);
$stmt = $mysqli -> prepare("SELECT customerID from customer WHERE customerEmail = ? AND customerPassword = ? ");
$stmt -> bind_param("ss", $loginEmailAddress,$loginPassword);
$stmt -> execute();
$stmt->store_result();
$stmt -> bind_result($customerID);
$stmt -> close();
當然沒有成功。 我也嘗試過這樣的事情:
$loginPassword = '" . PASSWORD('$loginPassword') . "';
我正在努力使用 phpass,但與此同時,我需要繼續為我現有的客戶使用 PASSWORD,直到他們登錄,我可以將他們移動到新的哈希。
PASSWORD()
是一個 MySQL 函數。 它是 SQL 的一部分。 你只需要參數化你傳遞給這個函數的參數。
$stmt = $mysqli -> prepare("SELECT customerID
FROM customer
WHERE customerEmail = ? AND customerPassword = PASSWORD(?) ");
$stmt -> bind_param("ss", $loginEmailAddress,$loginPassword);
$stmt -> execute();
警告:
僅存儲使用 PHP 的password_hash()
創建的密碼哈希,然后您可以使用password_verify()
進行驗證。 看看這篇文章:如何使用 password_hash並了解有關PHP 中 bcrypt 和密碼哈希的更多信息
警告:
從 MySQL 5.7.6 起,此功能已棄用,並將在未來的 MySQL 版本中刪除。
PASSWORD() 被 MySQL Server 中的認證系統使用; 你不應該在你自己的應用程序中使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.