$ row在准备好的语句(MySQLi)中代表什么?

时间:2019-06-26 17:25:03

标签: php mysqli

我正在观看YouTube上的登录系统指南,并重新创建它。即将完成,但是每次我尝试登录时,都会给我一个错误:

  

“密码错误”

我怀疑这与if语句中的 $ row 有关。但是我不知道 $ row 会做什么。

如果有人可以看到问题,我会留下一些代码。

   <?php
    else {
    $sql = "SELECT * FROM users WHERE uidUsers=? OR emailUsers=?;";
    $stmt = mysqli_stmt_init($conn);
    if (!mysqli_stmt_prepare($stmt, $sql)) {
        header("Location: ../index.php?error=sqlerror");
        exit();
    }
    else{
        mysqli_stmt_bind_param($stmt, "ss", $mailuid, $mailuid);
        mysqli_stmt_execute($stmt);
        $result = mysqli_stmt_get_result($stmt);
        if ($row = mysqli_fetch_assoc($result)) {
            $pwdCheck = password_verify($password, $row['pwdUsers']);
            if ($pwdCheck == false) {
                header("Location: ../index.php?error=wrongpwd");
                exit();
            }
            elseif ($pwdCheck == true) {
                session_start();
                $_SESSION['userId'] = $row['idUsers'];
                $_SESSION['userUid'] = $row['uidUsers'];

                header("Location: ../index.php?login=succes");
                exit();
            } ?>

1 个答案:

答案 0 :(得分:0)

  

如果($ row = mysqli_fetch_assoc($ result))

这将尝试从查询结果中获取一行。如果要从结果中获取一行,则将该行分配给 $ row 变量,并执行 if 语句。如果没有要从结果中提取的行,则 if 语句返回 false 并被跳过。