SELECT hashed_password = '{$hashed_password}' AS is_password_correct
FROM employees WHERE email = '{$email}'
如果沒有與$ email匹配的條目,此查詢將返回零行。
如果有一行匹配$ email,查詢將返回1或0,這取決於select-list中的布爾相等比較是true還是false。
然後,您可以根據三種可能的狀態在應用中執行不同的操作。
您應該停止在PHP中使用棄用的「mysql」函數,它們將在下一版本的PHP中消失。使用mysqli或PDO。
此外,您應該學習使用準備好的查詢並將$ hashed_password和$ email作爲查詢參數。然後,您可以避免SQL注入漏洞,而不必擔心轉義字符串。
這裏有一個完整的示例(未經測試)與PDO:
$stmt = $pdo->prepare("SELECT hashed_password = :password AS is_password_correct
FROM employees WHERE email = :email");
if ($stmt === false) {
// always check for errors
}
$result = $stmt->execute(array(":password"=>$hashed_password, ":email"=>$email));
if ($result === false) {
// always check for errors
}
if ($stmt->rowCount() == 0) {
// no such user
} else {
while ($row = $stmt->fetch()) {
if ($row["is_password_correct"] == 1) {
// password is correct for the given user
} else {
// password is wrong
}
}
}
是電子郵件和hashed_password每個獨特之處? –