PHP PDO - FETCH_INTO,$ this。填充预先实例化的对象

时间:2013-03-26 11:01:30

标签: php pdo

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

我稍微简化了我的代码,(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();

当我转储我的用户对象时,我得到:

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

我已尝试将所有属性设置为公开,结果相同。所有值都保持为NULL。

This所以答案对我来说也不起作用。

2 个答案:

答案 0 :(得分:0)

你试过吗

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

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

答案 1 :(得分:0)

问题是你试图在你的User类中选择id,email和密码但是它们受到保护,你甚至可以保留这些属性,因为列名将定义属性名称。

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();
    }

}