簡體   English   中英

PHP OOP:如何將數據庫行作為對象?

[英]PHP OOP: How to get database rows as objects?

我可以在選擇單行時做到這一點,但是我不知道如何為多行數據做這件事。

對於單行,我只是實例化一個新對象,該對象在幕后執行許多操作,從而基本上從數據庫中生成一行作為我們的對象。

例:

$object = new Classname($param);
foreach($object->row as $key=>$value) {
    echo $key.":".$value."\n";
}

//output
id:1
firstname:steve
lastname:took
etc...

這里任何聰明的人都能指出我正確的方向嗎?

注意:只是希望能夠為每一行創建一個對象,而不是一個具有嵌套數組的對象

編輯:抱歉$ object-> row是存儲數據庫中所選行的類的成員

如果我找到你的答案很簡單mysql_fetch_object

例:

while ($row = mysql_fetch_object($result)) {
    echo $row->user_id;
    echo $row->fullname;
}

這是一個例子

class users extends db {

    public $users_id = 0;
    public $users_group = 0;
    public $users_firstname = 0;
    public $users_lastname = 0;

    public function open($id) {
        if (is_numeric($id)) {
            $sql = "SELECT * FROM users WHERE users_id = '$id'";
            $res = parent::DB_SELECT($sql);
            if (mysql_num_rows($res) <> 1) {
                return 0;
            }
        } else {
            $sql = "SELECT * FROM users " . $id;
            $res = parent::DB_SELECT($sql);
            if (mysql_num_rows($res) <= 0) {
                return 0;
            }
        }


        $data = array();
        while ($row = mysql_fetch_array($res)) {
            $this->users_id = $row['users_id'];
            $this->users_group = $row['users_group'];
            $this->users_firstname = $row['users_firstname'];
            $this->users_lastname = $row['users_lastname'];
            $data[] = (array) $this;
        }
        return $data;
    }

    public function setUsersId($users_id) { $this->users_id = addslashes($users_id); }
    public function getUsersId() { return stripslashes($this->users_id); }

    public function setUsersGroup($users_group) { $this->users_group = addslashes($users_group); }
    public function getUsersGroup() { return stripslashes($this->users_group); }

    public function setUsersFirstname($users_firstname) { $this->users_firstname = addslashes($users_firstname); }
    public function getUsersFirstname() { return stripslashes($this->users_firstname); }

    public function setUsersLastname($users_lastname) { $this->users_lastname = addslashes($users_lastname); }
    public function getUsersLastname() { return stripslashes($this->users_lastname); }
}

你可以使用MySQLi。

// Connect
$db = new mysqli('host', 'user', 'password', 'db');

// Query
$users = $db->query('SELECT * from users');

// Loop
while($user = $users->fetch_object()) {
    echo $users->field;
}

// Close
$users->close();
$db->close();

更多信息: http//php.net/manual/en/book.mysqli.php

你為什么不考慮使用ORM(對象關系映射器),如Doctrine或Propel? 我更喜歡Doctrine: http//www.doctrine-project.org/享受! :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM