MySQL DAL(數(shù)據(jù)訪問層)是一種將關(guān)系型數(shù)據(jù)庫 MySQL 等與其它應(yīng)用程序解耦的架構(gòu)模式。MySQL DAL 將數(shù)據(jù)訪問和操作從業(yè)務(wù)邏輯中分離出來,提高了應(yīng)用程序的可維護性和可擴展性。
MySQL DAL 的主要實現(xiàn)方式是通過面向?qū)ο缶幊痰姆绞?,將?shù)據(jù)訪問和操作封裝成獨立的類。這些類負(fù)責(zé)處理數(shù)據(jù)庫的連接、查詢、數(shù)據(jù)插入、數(shù)據(jù)修改等操作,對外提供統(tǒng)一的接口。
下面我們通過一個例子來演示如何使用 MySQL DAL 實現(xiàn)數(shù)據(jù)訪問。
// DAL.php
class DAL
{
private $conn;
function __construct($hostname, $username, $password, $database)
{
$this->conn = new mysqli($hostname, $username, $password, $database);
if ($this->conn->connect_error) {
die("連接失敗:" . $this->conn->connect_error);
}
}
function __destruct()
{
$this->conn->close();
}
function query($sql)
{
if ($res = $this->conn->query($sql)) {
$rows = array();
while ($row = $res->fetch_assoc()) {
$rows[] = $row;
}
$res->free();
return $rows;
} else {
die("查詢失敗:" . $this->conn->error);
}
}
function insert($sql)
{
if ($this->conn->query($sql)) {
return $this->conn->insert_id;
} else {
die("插入失?。? . $this->conn->error);
}
}
function update($sql)
{
if ($this->conn->query($sql)) {
return $this->conn->affected_rows;
} else {
die("更新失敗:" . $this->conn->error);
}
}
function delete($sql)
{
if ($this->conn->query($sql)) {
return $this->conn->affected_rows;
} else {
die("刪除失敗:" . $this->conn->error);
}
}
}
// index.php
require_once 'DAL.php';
$dal = new DAL('localhost', 'root', 'password', 'database');
// 查詢數(shù)據(jù)
$rows = $dal->query("SELECT * FROM `users` WHERE `status` = 1");
// 插入數(shù)據(jù)
$id = $dal->insert("INSERT INTO `users` (`name`, `age`, `status`) VALUES ('John', 20, 1)");
// 更新數(shù)據(jù)
$affected_rows = $dal->update("UPDATE `users` SET `age` = 21 WHERE `id` = $id");
// 刪除數(shù)據(jù)
$affected_rows = $dal->delete("DELETE FROM `users` WHERE `id` = $id");
上面的代碼實現(xiàn)了一個簡單的 MySQL DAL,包括連接數(shù)據(jù)庫、查詢數(shù)據(jù)、插入數(shù)據(jù)、更新數(shù)據(jù)、刪除數(shù)據(jù)等操作。通過這些操作,我們可以輕松地訪問 MySQL 數(shù)據(jù)庫。