OK,再让我们看看效果如何?
$STH = $DBH->query('SELECT name, addr, city from folks'); $STH->setFetchMode(PDO::FETCH_CLASS, 'secret_person');
while($obj = $STH->fetch()) { echo $obj->addr; }
如果地址是,‘5 Rosebud,’ 您将会在输出中看到 ‘5 Rxxxxxx’. 当然,可能有些情况下,您希望在constructor函数在数据被赋值之前调用.PDO也可以做到~
$STH->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'secret_person');
现在,当你使用这个模式(PDO::FETCH_PROPS_LATE)的地址不会被遮,constructor会被首先调用然后再赋值.
最后,如果你真的需要,你可以在使用PDO获取数据到对象时,将参数传递给构造函数:
$STH->setFetchMode(PDO::FETCH_CLASS, 'secret_person', array('stuff'));
如果你需要传递不同的数据到每个对象的构造函数,你可以设置在fetch方法内设置模式法模式:
$i = 0; while($rowObj = $STH->fetch(PDO::FETCH_CLASS, 'secret_person', array($i))) { // do stuff $i++ }
其他有用的方法
虽然 PDO 并没有面面俱到的(这扩展可不小!), 这里仍还还有一些您想知道的方法.
$DBH->lastInsertId();
lastInsertId()方法始终调用数据库句柄,而不是表达式的句柄,并且会返回该数据库连接上一次插入语句的自增ID.
$DBH->exec(‘DELETE FROM folks WHERE 1′);
$DBH->exec(“SET time_zone = ‘-8:00′”);
exec()方法用于那些不能返回数据或不影响行的操作. 上面是两种调用exec()方法的例子.