2

我注意到PDO::FETCH_INTOfetch 模式在内部不起作用,PDOStatement::fetch()但在手册中它说你可以使用PDO::FETCH_INTOwith PDOStatement::fetch()

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

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

那是不是意味着手册有点误导?PDO::FETCH_INTO在这种情况下,正确的使用方法是什么?

4

2 回答 2

2

试试这个方法:

$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,您甚至不需要设置器(编辑:不需要用于 PDO 的设置器,这对 id 字段很有用):

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

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

于 2012-04-09T11:04:53.633 回答
0

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

你可能想要这样的东西:

$user = $query->fetch(PDO::FETCH_INTO);
于 2012-04-09T10:38:48.590 回答