在早期 PHP 開發中,由於缺乏統一的資料庫抽象層,開發者往往需要自行封裝資料庫操作類別。本文介紹一個功能相對完整的 MySQL 操作類別,涵蓋連線管理、查詢執行、錯誤處理等核心功能,適合作為學習 PHP 面向對象資料庫封裝的參考範例。
該類別採用私有屬性封裝資料庫連線參數,包含主機位址、使用者帳號、密碼、資料庫名稱、連線識別碼、查詢結果資源、SQL 語句、資料表前綴與字元編碼等核心屬性。建構子負責初始化這些參數並自動建立連線。
<?php
class mysql {
private $db_host;
private $db_user;
private $db_password;
private $db_table;
private $db_conn; // 資料庫連線識別碼
private $result; // query 執行結果資源
private $sql; // SQL 執行語句
private $pre; // 資料表前綴
private $coding; // 資料庫編碼:GBK、UTF8、gb2312
function __construct($db_host, $db_user, $db_password, $db_table, $db_conn, $pre, $coding) {
$this->db_host = $db_host;
$this->db_user = $db_user;
$this->db_password = $db_password;
$this->db_table = $db_table;
$this->db_conn = $db_conn;
$this->pre = $pre;
$this->coding = $coding;
$this->connect();
}
connect() 方法使用 mysql_connect() 建立連線,並在失敗時透過 show_error() 輸出錯誤訊息。選擇資料庫時若找不到指定資料表,會輸出提示訊息。值得注意的是,此程式碼使用了已棄用的 mysql_* 函數族,現代專案建議改用 PDO 或 MySQLi。
function connect() {
$this->db_conn = @mysql_connect($this->db_host, $this->db_user, $this->db_password)
or die($this->show_error("資料庫連線錯誤,請檢查資料庫連線配置!"));
if (!mysql_select_db($this->db_table, $this->db_conn)) {
echo "沒有找到資料表:" . $this->db_table;
}
mysql_select_db($this->db_table, $this->db_conn);
// 設定字元編碼...
}
雖然此類別展示了早期 PHP 物件導向封裝的基本概念,但隨著 PHP 版本演進,mysql_* 函數已於 PHP 7.0 移除。現代開發應採用 PDO 或 MySQLi,並結合設計模式(如 Repository、Active Record)建構更健壯的資料存取層。