【发布时间】:2013-11-14 04:16:57
【问题描述】:
我正在尝试使用 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。
This 所以答案对我也不起作用。
【问题讨论】:
-
尝试使用适当的名称专门选择您需要的列(如果名称不完全匹配,请使用别名)
-
也只是一个注释,
User不应该负责获取有关自身的信息。应该有一个不同的对象来收集这些数据并用它创建一个User对象。 -
您是否尝试过对 $result 变量使用 var_dump 来检查它是否为空?
-
该死的。是的。就是这样,由于某种原因,没有在 SQL 中选择散列值。将我的所有属性设置为公开,然后它就起作用了。