首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

PHP MySQL 連線類封裝:查詢、異動、錯誤處理、欄位/資料表清單

     編輯:MySQL 資料庫相關知識

類別設計目標

  • 封裝連線、查詢、異動、錯誤代碼對照
  • 支援多資料庫切換
  • 提供關聯陣列 / 數值陣列雙模式回傳
  • 統計列數、取得欄位中繼資料、列出資料表

核心程式碼結構 (PHP 4 風格)

class dbLink {
  var $DBaseLink, $DBase;

  function dbLink($base="") {
    $this->DBaseLink = @mysql_connect("host","user","pass");
    if(!$this->DBaseLink) die($this->dbError(1));
    if($base) $this->dbChange($base);
  }

  function dbError($n, $sql="") {
    $map = array(
      1049=>"資料庫不存在", 1050=>"資料表已存在", 1051=>"資料表不存在",
      1054=>"欄位不存在", 1062=>"重複鍵值", 1064=>"語法錯誤",
      1146=>"資料表不存在", 1044=>"無存取權限", 1045=>"帳密錯誤"
    );
    echo "Error $n: ".$map[$n]."
$sql"; exit; } function dbQuery($sql, $base="", $type=0) { if($base || $this->DBase!=$base) $this->dbChange($base); $res = @mysql_query($sql, $this->DBaseLink); if($err=mysql_errno($this->DBaseLink)) $this->dbError($err,$sql); $rows = array(); for($i=0,$n=mysql_num_rows($res); $i<$n; $i++) { $rows[$i] = ($type==0) ? mysql_fetch_assoc($res) : mysql_fetch_row($res); } mysql_free_result($res); return $rows; } function dbIo($sql, $base="") { // INSERT/UPDATE/DELETE if($base || $this->DBase!=$base) $this->dbChange($base); @mysql_query($sql, $this->DBaseLink); if($err=mysql_errno($this->DBaseLink)) $this->dbError($err,$sql); return mysql_insert_id($this->DBaseLink); } function dbCountRecords($table, $where="", $base="", $index="id") { ... } function dbFieldList($table, $base) { ... } function dbTableList($basename) { ... } }

使用範例

$db = new dbLink("mydb");
$users = $db->dbQuery("SELECT * FROM users WHERE status=1");
$db->dbIo("INSERT INTO log(msg) VALUES('test')");
$cnt = $db->dbCountRecords("orders", "WHERE status='paid'");

現代化建議 (PHP 7+)

  • 改用 PDO 或 mysqli (支援 prepared statement、交易、例外處理)
  • 採用 fetchAll(PDO::FETCH_ASSOC) 替代手動迴圈
  • 錯誤處理拋出 Exception 而非 die()
  • 依賴注入容器管理連線實例
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved