为什么我会收到 null 作为包含数据的 sql 列的响应?(菲律宾比索)

Why am I receiving null as a response for an sql column with data in it? (PHP)

提问人:drakepolo 提问时间:1/3/2022 更新时间:1/3/2022 访问量:258

问:

我正在构建一个登录系统,除了将输入的密码与数据库中的密码交叉引用的部分外,其他所有部分都运行良好。因此,当我检查密码是否匹配时,我意识到数据库中的密码返回为空。请问发生了什么事??(“uidExists”方法没有问题,似乎只是在“loginUser”方法中)。

这是基于此视频 https://www.youtube.com/watch?v=gCo6JqGMi30

我相信大约是一小时 40 分钟,他进入了 loginUser 功能。

function loginUser($conn,$username,$pwd){
$uidExists = uidExists($conn,$username,$username);

if($uidExists === false){
    header("location: ../login.php?error=wrongslogin");
    exit();
}
else{
    echo $pwd;
    if(is_null($uidExists["userPwd"])){
        echo "Empty bruv";
    }
    else{
        echo $uidExists["userPwd"];
    }
}


function uidExists($conn,$username,$email){
$sql = "SELECT * FROM users WHERE userUid = ? OR userEmail = ?;";
$stmt = mysqli_stmt_init($conn);

if(!mysqli_stmt_prepare($stmt,$sql)){
    header("location: ../signup.php?error=stmtfailed");
    exit();
}

mysqli_stmt_bind_param($stmt,"ss",$username,$email);
mysqli_stmt_execute($stmt);

$resultData = mysqli_stmt_get_result($stmt);

if(mysqli_fetch_assoc($resultData)){
    return $row;
}
else{
    $result = false;
    return $result;
}

mysqli_stmt_close($stmt);

}

PHP HTML SQL 身份验证 mysqli

评论

2赞 1/3/2022
在索引 1:39:02 处,它显示了一个插入语句,该语句将列名显示为: - 注意您的查询有 or 的地方 - 所以你偏离了课程,或者你的选择语句和/或你的结果引用不正确。我建议发布您的 sql 语句进行确认。另请注意,您的对帐单无法访问。usersName,usersEmail,usersId,usersPwdusersuserEmailuserUidCREATEmysqli_stmt_close()

答:

-1赞 Rob Moll 1/3/2022 #1

这看起来不对:

$uidExists = uidExists($conn,$username,$username);

这应该是:

$uidExists = uidExists($conn,$username,$userPwd);

评论

0赞 drakepolo 1/3/2022
它在视频中是如何制作的,它在他的这边工作得很好。
1赞 ADyson 1/3/2022
@RobMoll您确定它应该按照您的建议发送密码吗?uidExists 函数需要电子邮件作为第三个参数,而不是密码
0赞 Rob Moll 1/3/2022
我刚刚浏览了视频,@ 1:39:00 他表明他这样做是因为用户可以提供用户名或电子邮件。所以这似乎不是问题。很抱歉造成混乱。
0赞 drakepolo 1/3/2022
@RobMoll是的,起初我以为你在做某事,但后来我查看了视频,记得他这样做是为了接受电子邮件和用户名作为输入