我注意到 PDO::FETCH_INTO
获取模式在 PDOStatement::fetch()
中不起作用,但在 manual 中它说您可以将 PDO::FETCH_INTO
与 PDOStatement::fetch()
一起使用。
我想做的是: $query->fetch(PDO::FETCH_INTO, $user);
返回:PDOStatement::fetch() expects parameter 2 to be long, object given
这是否意味着该手册具有误导性?在这种情况下,使用 PDO::FETCH_INTO
的正确方法是什么?
最佳答案
试试这个方法:
$stmt->setFetchMode(PDO::FETCH_INTO, $user);
$user = $stmt->fetch();
更新:
如果您拥有带有公共(public) setter (推荐)而不是公共(public)属性的私有(private)/ protected 属性,请改用 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
关于php - PDOStatement::fetch() 说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10071948/