繁体   English   中英

不从数据库获取数据

[英]Getting no data from database

我正在尝试为学校项目开发登录系统,但是遇到了该错误,而且我不知道如何解决。

在我的数据库上,我将密码spy123存储在sha256哈希中,但是当我尝试在php中获取密码时,却没有任何回报。

当前代码:

// checks if the user/password combination works.
// $username | String - the username of the user to login
// $password | 32byteHash - the hashed password of the user
// return | Boolean - Returns true if the password works for that user.
function forumLib_checkLogin($username, $password){
    $goodLogin = false; //Assume the password is wrong.

    $obtainUserPassword_query = "SELECT password FROM forum_users WHERE username = '$username'";

    $dbc = forumLib_connectToDB();
    $results = mysqli_query($dbc, $obtainUserPassword_query);
    forumLib_closeConnectionToDB($dbc);

    echo "query: $obtainUserPassword_query <br />";
    echo "results: ".mysqli_fetch_array($results)."<br />";
    $row = mysqli_fetch_array($results);
    echo "row[0]: ".$row[0]."<br />";
    echo "password: $password <br />";
    echo "DBpassword: $passwordOnDB <br />";

    //if user exists
    if($results != false){
        //get password from DB
        $row = mysqli_fetch_array($results);
        $passwordOnDB = $row['password'];

        //check password
        if($password == $passwordOnDB){
            //successfull login
            $goodLogin = false;
        }
    }

    return $goodLogin;
}

输出:

change password request detected 
query: SELECT password FROM forum_users WHERE username = 'SpyMaster356' 
results: Array
row[0]: 
password: 7d9519224964c72a90b342c565fab1e4582d0e974043798f940b471304db0e24 
DBpassword:
Current password does not match records.

sql查询是正确的,因为当我手动输入7d9519224964c72a90b342c565fab1e4582d0e974043798f940b471304db0e24时,它会返回。

这真让我感到困惑。

首次调用mysqli_fetch_array ,就消耗了第一行数据。 随后,当您尝试将其捕获到$row变量中时,该行已被使用且未保存:

// Prints  'Array'. Did not save the result
echo "results: ".mysqli_fetch_array($results)."<br />";

// Doesn't get anything because the row has been previously fetched
$row = mysqli_fetch_array($results);

更改后续细分

echo "query: $obtainUserPassword_query <br />";
echo "results: ".mysqli_fetch_array($results)."<br />";
$row = mysqli_fetch_array($results);
echo "row[0]: ".$row[0]."<br />";
echo "password: $password <br />";
echo "DBpassword: $passwordOnDB <br />";

首先填充$row数组,并将其用于进一步的echo

echo "query: $obtainUserPassword_query <br />";
$row = mysqli_fetch_array($results);
echo "results: ". print_r($row) ."<br />";
echo "row[0]: ".$row[0]."<br />";
echo "password: $password <br />";
echo "DBpassword: {$row[0]} <br />";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM