2011-03-05 223 views
1

我正在創建一個需要向我提供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;   
    } 
} 

回答

1

你的循環不斷改寫dataitem,並new ContentItem()立即覆蓋。如果「對象集合」你的意思是「陣列」,這是相當簡單:

$items = array(); 
while ($data = mysql_fetch_object($result)) { 
    $items[] = $data; 
} 
return $items; 

如果你想要回自己的自定義對象集合,然後定義集合類,並添加$數據的集合中的每個時間(大概也存儲在一個數組中)。

1

簡單的解決方案將是一個數組。我還假設你想從每組$數據

$items = array(); 
while ($data = mysql_fetch_object($result)) { 
     $items[] = new ContentItem($data); 
} 
return $items; 

製成如果以後要與項目工作ContentItem,你可以使用foreach

foreach ($items as $item) { 
    // do something with $item 
} 
5

對於集合,你需要創建一個對象它實現了Iterator interface。你可以用數組,對象或任何你想要的來填充它。 Iterator確保您可以在foreach之後的循環中使用此集合。

此外,代碼中存在錯誤。一次又一次地覆蓋$item。你應該創建一個數組(或者實現了Iterator的對象,正如我所提到的那樣),它將在每個循環中填充(如tandu已經寫過)。