我正在创建一个需要向我提供MySQL表“内容”中所有数据的类。
我希望将我的数据作为对象返回。 到目前为止,我设法返回一个对象,但我想得到一个对象集合,其中包含数据库中的所有行。
<?
class ContentItem {
public $id;
public $title;
public $subtitle;
public $conent;
public $intro_length;
public $active;
public $start_date;
public $end_date;
public $views;
static function getContentItems() {
$query = "SELECT * FROM content";
$result = mysql_query($query)or die(mysql_error());
$item = new ContentItem();
while ($data = mysql_fetch_object($result)) {
$item = $data;
}
return $item;
}
}
答案 0 :(得分:5)
对于集合,您需要创建一个实现Iterator interface的对象。你可以用数组,对象或任何你想要的东西填充它。 Iterator
确保您可以在foreach
循环之后使用此集合。
此外,您的代码中存在错误。你一遍又一遍地覆盖$item
。您应该创建一个数组(或实现Iterator
的对象,如我所提到的),它将在while的每个周期填充(如tandu已写的那样)。
答案 1 :(得分:1)
您的循环会一直使用data
覆盖item
,并立即覆盖new ContentItem()
。如果通过“对象集合”表示“数组”,则非常简单:
$items = array();
while ($data = mysql_fetch_object($result)) {
$items[] = $data;
}
return $items;
如果要返回自己的自定义对象集合,则定义集合类并每次向其集合添加$ data(也可能存储在数组中)。
答案 2 :(得分:1)
简单的解决方案是数组。我还假设你想要一个由每组$ data
组成的ContentItem$items = array();
while ($data = mysql_fetch_object($result)) {
$items[] = new ContentItem($data);
}
return $items;
如果您以后想要使用这些项目,可以使用foreach
foreach ($items as $item) {
// do something with $item
}