【发布时间】:2015-06-30 19:29:39
【问题描述】:
我想在一个类中使用一个关联数组(PDO 查询的结果),这样我就可以用一些数据库内容构造一个 DIV。
如何获取类中的数组?在while循环中我要创建一个对象,在这个对象的Class中我要构造HTML。
while($data = $stmt->fetch( PDO::FETCH_ASSOC )){
$html = new class;
echo $html;
}
【问题讨论】:
我想在一个类中使用一个关联数组(PDO 查询的结果),这样我就可以用一些数据库内容构造一个 DIV。
如何获取类中的数组?在while循环中我要创建一个对象,在这个对象的Class中我要构造HTML。
while($data = $stmt->fetch( PDO::FETCH_ASSOC )){
$html = new class;
echo $html;
}
【问题讨论】:
如果您希望您的 while 循环能够像您编写的那样工作,您可以编写类的构造函数,以便它接受数据作为参数,然后在 __toString 中实现 div 输出方法。
class HtmlDivFormatter {
private $data;
public function __construct($data) {
$this->data = $data;
}
public function __toString() {
return '<div>' . $this->data['column_name'] . '</div>';
// whatever HTML you have in mind
}
}
while ($data = $stmt->fetch( PDO::FETCH_ASSOC )) {
$html = new HtmlDivFormatter($data);
echo $html;
}
【讨论】:
见PDO::FETCH_CLASS 或PDO::FETCH_INTO
更多信息在这里http://php.net/manual/en/pdostatement.fetch.php 和这个
PHP PDO fetching into objects
还有一些示例代码:
<?php
$sql = 'SELECT firstName, lastName FROM users';
$stmtA = $pdo->query($sql);
$stmtA->setFetchMode(PDO::FETCH_CLASS, 'Person');
$objA = $stmtA->fetch();
var_dump($objA);
//first create the object we will fetch into
$objC = new Person;
$objC->firstName = "firstName";
$objC->lastName = "lastName";
$stmtC = $pdo->query($sql);
$stmtC->setFetchMode(PDO::FETCH_INTO, $objC);
$objC = $stmtC->fetch(); // here objC will be updated
var_dump($objC);
class Person{
public $firstName;
public $lastName;
}
【讨论】: