簡體   English   中英

MySQL 返回不正確的行與 PDO

[英]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返回truefalse表示查詢是否成功。

為了從查詢中取回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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM