我正在使用PDO编写自己的ORM。我的问题是你是否可以强制PDOStatement::fetchAll()
方法返回stdClass的对象数组?例如:
$result = $q->fetch_all(/* some magic here */);
print_r($result);
应打印如下内容:
Array
(
[0] => stdClass Object
(
[NAME] => pear
[COLOUR] => green
)
[1] => stdClass Object
(
[NAME] => watermelon
[COLOUR] => pink
)
)
这是真的吗? NAME和COLOR当然是列的名称。我阅读了文档,但没有找到任何有趣的内容。
答案 0 :(得分:53)
使用$result = $q->fetchAll(PDO::FETCH_OBJ);
答案 1 :(得分:10)
这样做:
<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $q->fetchAll(PDO::FETCH_OBJ);
//$result contains an array of stdObjects
?>
然而,更酷的方法是让PDO实例化你自己的类并为你填充属性:
示例#4为每个结果实例化一个类
以下示例演示了该行为 PDO :: FETCH_CLASS获取样式。
<?php
class fruit {
public $name;
public $colour;
}
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetchAll(PDO::FETCH_CLASS, "fruit");
//$result contains an array of fruit objects
?>
答案 2 :(得分:0)
您还应该能够执行以下操作:
$stmt->setFetchMode(PDO::FETCH_OBJ); //set the mode for all fetch request
对于任何后续fetch
请求,您可以省略明确指定模式。
$stmt->setFetchAll(); //returns an array of objects