我注意到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
的正确方法是什么?
答案 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);