我對 MySQL 和 PHP 比較陌生,所以請耐心等待。以下代碼:
$query = $pdo->prepare("SELECT `id` FROM `Logins` WHERE `username`=:u AND `hash`=SHA2(CONCAT(salt,:p),512)");
$id = $query->execute([
'u' => $_POST['user'],
'p' => $_POST['pass']
]);
似乎總是為 id 回傳 1,無論在表單中輸入什么用戶名或密碼,無論它對 id 3 有效還是完全無效。這讓我認為這是來自 MySQL 的錯誤或其他什么,但是當我直接使用它連接到 MySQL 服務器時,上面的命令有效。
我已經驗證了表單中的資料是正確的,并且 PDO 不會因此引發任何錯誤,所以也許這不是代碼在做這件事,但我不確定它可能是什么。PHP 檔案的其余部分只是一個登錄螢屏 html,它在過去一直有效,以及創建連接的東西,這似乎也有效。
提前致謝。
uj5u.com熱心網友回復:
execute回傳true或false表示查詢是否成功。
為了id從查詢中回傳,您需要fetch它。例如:
$query = $pdo->prepare("SELECT `id` FROM `Logins` WHERE `username`=:u AND `hash`=SHA2(CONCAT(salt,:p),512)");
$success = $query->execute([
'u' => $_POST['user'],
'p' => $_POST['pass']
]);
if ($success) {
$result = $query->fetch(PDO::FETCH_ASSOC);
$id = $result['id'];
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/419415.html
標籤:
下一篇:獲取php多維陣列的總和
