澄清PDOStatement :: fetch()

时间:2012-04-09 10:34:00

标签: php pdo

我注意到PDO::FETCH_INTO提取模式在PDOStatement::fetch()内不起作用,但在manual中,它表示您可以将PDO::FETCH_INTOPDOStatement::fetch()一起使用。

我试图这样做: $ query-> fetch(PDO :: FETCH_INTO,$ user);

返回:PDOStatement::fetch() expects parameter 2 to be long, object given

这不是说手册有点误导吗?在这种情况下使用PDO::FETCH_INTO的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

尝试这种方式:

$stmt->setFetchMode(PDO::FETCH_INTO, $user);
$user = $stmt->fetch();

更新:

如果您拥有使用公共设置者(建议使用)而非公共属性的私有/受保护属性,请改用FETCH_CLASS:

class User {
    protected $username;

    public setUsername($username) {
        $this->username = $username;
    }
...
}
...
$stmt->setFetchMode(PDO::FETCH_CLASS, 'User');
$user = $stmt->fetch();

更新2:

使用PDO :: FETCH_CLASS,你甚至不需要setter(编辑:不需要PDO的setter,这对id字段有用):

class User {
    protected $username;
...
}
...
$stmt->setFetchMode(PDO::FETCH_CLASS, 'User');
$user = $stmt->fetch();

更新3:在此处查看完整示例:http://pastebin.com/LneAj0xn

答案 1 :(得分:0)

请注意,PDOStatement :: fetch()的第二个参数是cursor_orientation

你可能想要这样的东西:

$user = $query->fetch(PDO::FETCH_INTO);