如何从OOP编程中的类返回多个数据库记录

时间:2010-11-14 22:25:22

标签: php mysql oop class

假设我有一个这样的课程

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个物品,但我认为有更好的方法

2 个答案:

答案 0 :(得分:2)

我重命名函数show_books并让它返回一个book个对象的数组。如果没有匹配项,则返回空数组,否则返回所有匹配元素。它可能最有意义的是静态方法而不是实例方法。

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 :(得分:1)

课本代表一本书(顾名思义)。

因此,如果将show_books()方法从此类移动到另一个位置会更好。

现在,您可以修改它以返回找到的书籍数组:在while循环中,您需要为从查询中获得的每条记录创建新的书籍对象。