要将行获取到类的现有实例中,请使用 PDO::FETCH_INTO 并将对象作为第二个参数传递。
该类_必须_将列名声明为公共成员,否则脚本将终止。但使用 __set() 和 __get() 进行重载可以让它处理查询中遇到的任何列。
在调用 prepare() 后立即设置获取模式。您_必须_使用 execute() - fetch() 不起作用。一个小的示例,改编自 ext/pdo/tests/pdo_025.phpt
<?php
class Test
{
protected $cols;
function __set($name, $value) {
$this->cols[$name] = $value;
}
function __get($name) {
return $this->cols[$name];
}
}
$obj = new Test();
$db = PDOTest::factory();
$stmt = $db->prepare("select * from test");
$stmt->setFetchMode(PDO::FETCH_INTO, $obj);
$stmt->execute();
foreach ($stmt as $a) {
print_r($a);
}
print_r($obj); ?>