2010-11-14 30 views
0

返回多個數據庫記錄可以說我有這樣的如何從一個類中面向對象的編程

class book { 
    public $title; 
    public $author; 
    public $page_num; 
     ..... 
     .... 

public function show_book($limit=1){ 
     .... 
     $result = mysql_query("SELECT title,author,page_num FROM book limit=$limit"); 

     while($row = mysql_fetch_array($result)) 
      { 
     $this->title=$row['title']; 
     $this->author=$row['author']; 
     $this->page_num=$row['page_num']; 
      } 

     } 

一類,然後我可以用它喜歡:

$book = new book(); 
$book->show_book(); 
echo $book->title." ".$book->author ...... ; 

這適用於一本書 如果我想展示7本書,該怎麼辦? 這是不工作的$book->show_book($limit=7); 我可以讓7個對象,但我覺得有我重命名功能show_books,並使其返回book對象的數組更好的辦法

+0

你有沒有WHERE子句,所以我猜你只有一條記錄在'BOOK'表... – 2010-11-14 22:27:09

+0

爲什麼,爲什麼,你有公共領域?如果你打算使用OOP,請不要破壞封裝。 – Robert 2010-11-14 22:39:18

回答

2

。如果沒有匹配,則返回一個空數組,否則返回所有匹配元素。它可能最適合作爲靜態方法而不是實例方法。

public static function show_books($limit=1){ 
    .... 
    $result = mysql_query("SELECT title,author,page_num FROM book limit=$limit"); 
    $books = array(); 

    while($row = mysql_fetch_array($result)) 
    { 
      $book = new book(); 
      $book->title=$row['title']; 
      $book->author=$row['author']; 
      $book->page_num=$row['page_num']; 
      $books[] = $book; 
    } 
    return $books; 
} 

$books = Book::show_books(7); 
1

該書的書代表了一本書(顧名思義)。

因此,這將是,如果你的舉動更從這個類到另一個地方的show_books()方法。現在

,你可以修改它返回的發現書的數組:在while循環,你需要爲每個從查詢獲取記錄創建新書對象。