php - MySQL php get column using another column(使用用户名获取密码)

标签 php html mysql mysqli

成功验证数据库中存在用户名后,我还需要验证密码是否匹配。因此,我需要从数据库中检索哈希密码,对吧?或者我还有其他选择吗?

我正在使用 PHP 5.5 API bcrypt 进行哈希处理。当我从数据库中获取密码时,我的代码会给我一个 500 内部服务器错误。我该如何正确地做到这一点?

这是我的 PHP 代码:

// If found username, check password, else respond invalid username
if($countRows!==0){
    // Get hash from database
        // Prepare statement
        $stmt = $conn->prepare('SELECT password FROM users WHERE username = ?');

        // Bind
        $stmt->bind_param('s', $ps_username);

        // Set Parameters
        $ps_username  = $username;

        // Execute
        $hash = $stmt->execute();

        // Check password
        if (!password_verify($password, $hash)) {
            if($error != ""){
                $error .= '<br>';
            }
            $error .= 'The user or password you entered do not match, please try again.';
        }
        else {
          echo 'OK';
            // Session start
            // Redirect user to profile/homepage
        }
}

有人可以推荐一些我可以学习 SQL 命令的东西吗?我找不到合适的地方。

最佳答案

execute()不返回任何列数据。它返回一个 bool 值(真/假)。这是您的代码块首先失败的地方:

    $hash = $stmt->execute();

您可以在此处查看有关如何从结果集中获取数据的示例:http://php.net/manual/en/mysqli-stmt.fetch.php

一个例子是:

$stmt->execute();
$stmt->bind_result($hash);
$stmt->fetch();

回应:

And can someone recommend something that I can learn SQL commands?

这对于 Stackoverflow 来说几乎是题外话,但是 mysqli 的 PHP 手册可以通过大量示例向您展示如何很好地使用 mysqli API。如果您想学习结构化查询语言本身,可以使用大量外部资源,包括 MySQL 的文档。

关于php - MySQL php get column using another column(使用用户名获取密码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35496668/

相关文章:

php - 在php中使用ajax将数据插入数据库

php - 意外的 T_Variable !已经检查了两次编码

javascript - 如何在 CSS 的选择输入字段中制作向上/向下箭头?

c# - 使用定时器刷新界面,不断获取 "There is already an open DataReader associated with this Connection which must be closed first."

php - 使用 PHP 将数据库结构插入 MySQL?

php - 输出 mysql laravel 集合损坏

html - 如何创建带有预览的选择字体下拉列表?

javascript - 如何更改验证表单中的属性值

mysql - 如何更改 MySQL 中列的数据类型?

mysql - SQL按最接近时间合并2个表