[英]MySQL returning incorrect row with PDO
我對 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 文件的 rest 只是一個登錄屏幕 html,它在過去一直有效,以及創建連接的東西,這似乎也有效。
提前致謝。
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'];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.