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

PHP MySQL 資料庫連線類別:從基礎到實務應用

     編輯:PHP 相關知識

前言

資料庫連線是 PHP 後端開發的核心基礎。本文提供一個簡潔的 ConnectionMySQL 類別,示範建構子自動連線、常用查詢方法封裝、以及基本 CRUD 操作,並說明建構子使用時的注意事項。

類別完整程式碼

<?php
class ConnectionMySQL {
    private $host = "localhost";
    private $name = "root";
    private $pass = "";
    private $table = "phptest";
    private $ut = "utf-8";

    function __construct() {
        $this->connect();
    }

    function connect() {
        $link = mysql_connect($this->host, $this->name, $this->pass) or die($this->error());
        mysql_select_db($this->table, $link) or die("無此資料庫:" . $this->table);
        mysql_query("SET NAMES '$this->ut'");
    }

    function query($sql, $type = '') {
        if (!($query = mysql_query($sql))) $this->show('Say:', $sql);
        return $query;
    }

    function show($message = '', $sql = '') {
        if (!$sql) echo $message;
        else echo $message . '<br>' . $sql;
    }

    function affected_rows() { return mysql_affected_rows(); }
    function result($query, $row) { return mysql_result($query, $row); }
    function num_rows($query) { return @mysql_num_rows($query); }
    function num_fields($query) { return mysql_num_fields($query); }
    function free_result($query) { return mysql_free_result($query); }
    function insert_id() { return mysql_insert_id(); }
    function fetch_row($query) { return mysql_fetch_row($query); }
    function version() { return mysql_get_server_info(); }
    function close() { return mysql_close(); }

    // 簡易 CRUD 範例
    function fn_insert($table, $name, $value) {
        $this->query("INSERT INTO $table ($name) VALUES ($value)");
    }
    function fn_delete($table, $id, $value) {
        $this->query("DELETE FROM $table WHERE $id=$value");
        echo "id為 $id 的記錄被成功刪除!";
    }
}
?>

使用範例

<?php
$db = new ConnectionMySQL();

// 新增
$db->fn_insert('test', 'id,name,sex', "'', 'hongtenzone', 'M'");

// 刪除
$db->fn_delete('test', 'id', 1);
?>

重要注意事項

1. 建構子中的連線邏輯

function __construct() {
    $this->connect(); // 此處原碼有誤:$this->ut=$ut; 應移除或修正
}

建構子會自動呼叫 connect(),若在同一頁面多次實例化會建立多重連線,導致「MySQL server has gone away」錯誤。建議採用單例模式或依賴注入管理連線。

2. mysql_* 函式已棄用

自 PHP 5.5 起棄用,PHP 7.0 移除。 現代專案請改用 PDO 或 mysqli,並採用預處理語句防止 SQL 注入。

3. PDO 改寫範例

<?php
class Database {
    private static $instance = null;
    private $pdo;

    private function __construct() {
        $dsn = "mysql:host=localhost;dbname=phptest;charset=utf8";
        $this->pdo = new PDO($dsn, 'root', '', [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        ]);
    }

    public static function getInstance() {
        if (self::$instance === null) self::$instance = new self();
        return self::$instance;
    }

    public function query($sql, $params = []) {
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute($params);
        return $stmt;
    }
}

// 使用
$db = Database::getInstance();
$db->query("INSERT INTO test (name, sex) VALUES (?, ?)", ['hongtenzone', 'M']);
?>

結語

雖然 mysql_* 系列函式已成為歷史,但理解其封裝邏輯有助於掌握資料庫抽象層設計。實務開發請務必使用 PDO/mysqli,並建立連線池、錯誤處理、遷移機制等完善架構。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved