PHP 7.4 注意:尝试访问 bool 类型值的数组偏移量

PHP 7.4 Notice : Trying to access array offset on value of type bool in

我有一个使用 PDO 准备语句的简单登录表单,它在 php 7.3 下运行良好,但在 7.4 下我发现这有问题

我简单使用的代码是:

if(isset($_POST['btn_login'])){

    $useremail = $_POST['txt_email'];
    $password = $_POST['txt_password'];

    $select= $pdo->prepare("select * from tbl_user where useremail='$useremail' AND password='$password'");

    $select->execute();

    $row=$select->fetch(PDO::FETCH_ASSOC);

    if($row['useremail']==$useremail AND $row['password']==$password){

        echo $success='Login Successful';

        header('refresh:1;dashboard.php');
    }else{

        echo 'Login Failed';
    }

使用 PDO 和准备好的语句什么是 php 7.4 的正确解决方案?

因为您的查询没有结果。它 returns FALSE 并且您尝试将 false 作为数组访问。

所以测试行是否填充了数据
(请参阅更新的 if 语句)。

顺便说一句。在 header.

之后回显
if($row && $row['useremail']==$useremail && $row['password']==$password){
    header('refresh:1;dashboard.php');
    echo $success='Login Successful';
} else{
    echo 'Login Failed';
}

提示:使用准备好的语句

$select = $pdo->prepare("SELECT * FROM tbl_user WHERE useremail=? AND password=?");
$select->execute([$useremail, $password]);

警告

切勿以纯文本形式保存密码。使用 encryption.