首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 物件導向資料庫操作類別(MySQL)

     編輯:PHP 綜合知識

早期 PHP 專案常自寫資料庫封裝類別。本範例展示基本的 MySQL 連線、查詢、結果集處理與欄位資訊取得,採用物件導向風格,適合理解資料庫抽象層基本架構。

類別程式碼

<?php
class MySQLDB {
    var $host, $user, $passwd, $database, $conn;

    // 建構子:初始化並連線
    function MySQLDB($host, $user, $password, $database) {
        $this->host = $host;
        $this->user = $user;
        $this->passwd = $password;
        $this->database = $database;
        $this->conn = mysql_connect($this->host, $this->user, $this->passwd)
            or die("Could not connect to $this->host");
        mysql_select_db($this->database, $this->conn)
            or die("Could not switch to database $this->database");
    }

    // 關閉連線
    function Close() {
        mysql_close($this->conn);
    }

    // 執行查詢
    function Query($queryStr) {
        $res = mysql_query($queryStr, $this->conn)
            or die("Could not query database");
        return $res;
    }

    // 取得全部結果集(關聯+數字索引)
    function getRows($res) {
        $rows = [];
        $rowno = mysql_num_rows($res);
        if ($rowno > 0) {
            for ($row = 0; $row < $rowno; $row++) {
                $rows[$row] = mysql_fetch_array($res); // 同時支援索引與名稱存取
            }
        }
        return $rows;
    }

    // 取得筆數
    function getRowsNum($res) {
        return mysql_num_rows($res);
    }

    // 取得欄位數
    function getFieldsNum($res) {
        return mysql_num_fields($res);
    }

    // 取得欄位名稱陣列
    function getFields($res) {
        $fields = [];
        $fno = $this->getFieldsNum($res);
        if ($fno > 0) {
            for ($i = 0; $i < $fno; $i++) {
                $fields[$i] = mysql_field_name($res, $i);
            }
        }
        return $fields;
    }
}
?>

使用範例

<?php
require_once 'MySQLDB.php';

$SqlDB = new MySQLDB("localhost", "root", "root", "testdb");

$sql = "SELECT * FROM tableX";
$result = $SqlDB->Query($sql);
$rs = $SqlDB->getRows($result);
$num = $SqlDB->getRowsNum($result);

for ($i = 0; $i < $num; $i++) {
    echo $rs[$i]["欄位名"]; // 可用關聯索引存取
}

$SqlDB->Close(); // 良好習慣:顯式關閉連線
?>

重要提醒

  • ⚠️ mysql_* 函數自 PHP 5.5 棄用,PHP 7.0 移除。現代專案請改用 PDO 或 mysqli
  • 本範例僅供教學理解 OOP 封裝概念,勿用於新專案
  • 生產環境應加入:Prepared Statements 防 SQL 注入、錯誤例外處理、連線池管理

現代化改寫方向

  • 繼承 PDO 或封裝 mysqli
  • 實作 __construct、__destruct 魔術方法
  • 提供 prepare()、execute()、fetchAll() 等標準介面
  • 加入 Transaction、Logger、Profiler 等進階功能
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved