注意:尝试在第25行的C:\ xampp \ htdocs \ twitter \ core \ classes \ follow.php中访问类型为bool的值的数组偏移量

问题描述

一切似乎都正常,但出现错误

enter image description here

我在我的follow.PHP和profile.PHP中检查了拼写错误,甚至重新输入了代码的主要部分,但无法找出问题所在。 这是我的follow.PHP第25行

if($data['reciever'] == $profileID)

这是我的follow.PHP

    <?PHP
class Follow extends User
{
    
    function __construct($pdo)
    {
        $this->pdo = $pdo;
    }
    public function checkFollow($followerID,$user_id)
    {
        $stmt = $this->pdo->prepare("SELECT * FROM `follow` WHERE `sender` = :user_id AND `reciever` = :followerID");
        $stmt->bindParam(":user_id",$user_id,PDO::ParaM_INT);
        $stmt->bindParam(":followerID",$followerID,PDO::ParaM_INT);
        $stmt->execute();
        return $stmt->fetch(PDO::FETCH_ASSOC);
    }
    
    public function followBtn($profileID,$user_id)
    {
        $data = $this->checkFollow($profileID,$user_id);
        if($this->loggedIn() === true)
        {
            if($profileID != $user_id)
            {
                if($data['reciever'] == $profileID)
                {
                    //Following Button
                    echo "<button class='f-btn following-btn follow-btn' data-follow='".$profileID."'>Following</button>";
                }
                else
                {
                    //follow button
                    echo "<button class='f-btn following-btn follow-btn' data-follow='".$profileID."'><i class='fa fa-user-plus'></i>Follow</button>";
                }
            }
            else
            {
                //edit button
                echo "<button class='f-btn' onclick=location.href='profileEdit.PHP'>Edit Profile</button>";

            }
        }
        else
        {
            echo "<button class='f-btn' onclick=location.href='index.PHP'><i class='fa fa-user-plus'></i>Follow</button>";
        }
    }
}
?>

错误状态:

尝试访问类型为bool的值的数组偏移量

这发生在follow.PHP的第25行

因此,在关注follow.PHP的第25行

if($data['reciever'] == $profileID)

根据该错误,我们试图访问数组中的一个元素,但是该对象实际上是一个布尔值。因此,$ data必须为布尔值。向上看几行,在第20行上有:

$data = $this->checkFollow($profileID,$user_id);

因此$ data由checkFollow的返回值设置。 checkFollow必须是一个布尔值。查看checkFollow,我们看到它返回以下内容

return $stmt->fetch(PDO::FETCH_ASSOC);

布尔值必须来自$ stmt-> fetch。让我们看一下该方法的文档,其中指出:

函数成功返回的值取决于获取 类型。在所有情况下,失败均返回FALSE。

我的数据库

enter image description here

所以这就是错误的根源。为什么为什么fetch返回FALSE?也许查询未返回任何结果。也许数据库中没有匹配给定参数的行,但是我不知道如何实现它,因为我刚开始使用PHP。如果有人可以向我展示语法以更好地阐明它,将不胜感激。 谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)