PHP DAO PDO,全稱是(PHP Data Access Object PHP數(shù)據(jù)庫訪問對象),是一種傳統(tǒng)的設(shè)計模式。它被廣泛使用于PHP應用中,用于管理應用與數(shù)據(jù)之間的交互。具體來說,它是一種高效的數(shù)據(jù)庫訪問技術(shù),支持多種數(shù)據(jù)庫。采用PDO的主要優(yōu)點是實現(xiàn)了對不同數(shù)據(jù)庫的無縫切換,所以開發(fā)者們可以在不同的數(shù)據(jù)庫中共享代碼。
使用PDO和DAO,我們可以配置一些數(shù)據(jù)庫訪問類,在這些類里面可以定義一系列的方法,這些方法可以通過PDO方法調(diào)用需要執(zhí)行的SQL語句。下面詳細介紹一下PDO、DAO的使用。
為了演示PDO、DAO的用法,我們以MySQL數(shù)據(jù)庫為例,首先需要配置PDO連接。示例代碼如下:
try { $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); foreach($dbh->query('SELECT * from FOO') as $row) { print_r($row); } $dbh = null; } catch (PDOException $e) { print "Error!: " . $e->getMessage() . "
"; die(); }
上面代碼中,首先通過PDO類的構(gòu)造方法傳入數(shù)據(jù)庫的用戶名、密碼和數(shù)據(jù)庫名。然后使用foreach循環(huán)遍歷查詢結(jié)果,最后關(guān)閉數(shù)據(jù)庫連接。
PDO支持諸多數(shù)據(jù)庫。在PHP中支持的數(shù)據(jù)庫包括MySQL、SQLite和Oracle等數(shù)據(jù)庫系統(tǒng)。相信對于不同的開發(fā)人員,支持不同的數(shù)據(jù)庫是非常重要的。
接下來,我們來介紹PDO和DAO的具體用法。首先需要確定每個數(shù)據(jù)庫所需ORM擴展的類,創(chuàng)建基礎(chǔ)的數(shù)據(jù)訪問對象BeanDAO,并創(chuàng)建相關(guān)的查詢查詢類,進行數(shù)據(jù)表的創(chuàng)建操作。
db = new PDO($dsn,$user,$password); } } class ContactQuery extends BeanDAO{ public function findAll(){ return $this->db->query('select * from CONTACT') ->fetchAll(PDO::FETCH_ASSOC); } } ?>
BeanDAO創(chuàng)建了與數(shù)據(jù)庫的連接;ContactQuery則執(zhí)行一些查詢操作。這當然只是基本操作,開發(fā)人員可以自行添加各種不同的操作,包括新增、更新和刪除操作等。示例代碼如下:
db->query('select * from PRODUCT') ->fetchAll(PDO::FETCH_ASSOC); } public function findOne($id){ return $this->db->prepare("select * from PRODUCT where id=:id") ->execute(array(":id"=>$id)) ->fetch(PDO::FETCH_ASSOC); } public function create($product){ $stmt = $this->db->prepare('INSERT INTO PRODUCT (name, price, sales) VALUES (:name, :price, :sales)'); $stmt->bindParam(':name', $product['name']); $stmt->bindParam(':price', $product['price']); $stmt->bindParam(':sales', $product['sales']); return $stmt->execute(); } public function update($product){ $stmt = $this->db->prepare('UPDATE PRODUCT SET name=:name, price=:price, sales=:sales WHERE id=:id'); $stmt->bindParam(':id', $product['id']); $stmt->bindParam(':name', $product['name']); $stmt->bindParam(':price', $product['price']); $stmt->bindParam(':sales', $product['sales']); return $stmt->execute(); } public function delete($id){ $stmt = $this->db->prepare('DELETE FROM PRODUCT WHERE id = :id'); $stmt->bindParam(':id', $id); return $stmt->execute(); } } ?>
上面代碼是一些示例操作,包括獲取全部數(shù)據(jù)、獲取單條數(shù)據(jù)、新增數(shù)據(jù)、更新數(shù)據(jù)和刪除數(shù)據(jù)操作。
這就是使用PDO和DAO的基礎(chǔ)介紹,它是開發(fā)PHP應用程序的一種靈活、穩(wěn)定和高效的方式。