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']
]);
似乎总是 return 1 的 id,无论在表单中输入什么用户名或密码,无论它对 id 3 有效还是完全无效。这让我认为这是来自 MySQL 或其他什么的错误,但是当我直接在与 MySQL 服务器的连接中使用它时,上面的命令有效。
我已经验证了表单中的数据是正确的,并且 PDO 没有抛出任何错误,所以也许这不是执行此操作的代码,但我不确定它可能是什么。 PHP 文件的其余部分只是一个登录屏幕 html,它在过去有效,以及创建连接的内容,这似乎也有效。
提前致谢。
execute
returnstrue
或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'];
}
我对 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']
]);
似乎总是 return 1 的 id,无论在表单中输入什么用户名或密码,无论它对 id 3 有效还是完全无效。这让我认为这是来自 MySQL 或其他什么的错误,但是当我直接在与 MySQL 服务器的连接中使用它时,上面的命令有效。
我已经验证了表单中的数据是正确的,并且 PDO 没有抛出任何错误,所以也许这不是执行此操作的代码,但我不确定它可能是什么。 PHP 文件的其余部分只是一个登录屏幕 html,它在过去有效,以及创建连接的内容,这似乎也有效。
提前致谢。
execute
returnstrue
或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'];
}