0

我正在尝试使用 PDO 填充用户对象。

我已经稍微简化了我的代码(SQL 等),但基本上我有这个:

    Class User
    {       
        protected $id;  
        protected $email;
        protected $password;

        public function tokenCheck()
        {
            $sql = 'SELECT * FROM blah LIMIT 1';

            $STH = $this->DBH->prepare($sql);
            $STH->setFetchMode(PDO::FETCH_INTO, $this);
            $STH->execute();

            $result = $STH->fetch();
        }

    }

我打电话给:

$User->tokenCheck();

当我 var dump 我的用户对象时,我得到:

object(User)#1 (7) { ["id":protected]=> NULL [ ["email"]=> NULL ["password":protected]=> NULL ["token":protected]=> NULL }

我尝试将我的所有财产都设置为公开,结果相同。所有值都保持为 NULL。

这个SO 答案对我也不起作用。

4

2 回答 2

0

你有没有尝试过

$STH->fetchAll(PDO::FETCH_CLASS, "User");

它将实例化一个用您的数据填充的 User 类。

于 2013-03-26T11:21:25.343 回答
0

问题是你试图在你的用户类中选择 id、电子邮件和密码,但它们受到保护,你甚至可以将属性排除在外,因为列名将定义属性名。

Class User
{       
    PUBLIC $id;  
    PUBLIC $email;
    PUBLIC $password;

    public function tokenCheck()
    {
        $sql = 'SELECT * FROM blah LIMIT 1';

        $STH = $this->DBH->prepare($sql);
        $STH->setFetchMode(PDO::FETCH_INTO, $this);
        $STH->execute();

        $STH->fetch();
    }

}
于 2013-11-13T20:11:25.673 回答