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

ADODB 資料庫抽象層完整教學:連線、查詢、快取、移植與進階功能

     編輯:PHP 綜合知識

核心優勢

  • **統一 API**:MySQL/PostgreSQL/Oracle/SQL Server/Access/SQLite... 同一套方法
  • **物件導向**:Connection / RecordSet 物件封裝
  • **實用工具**:分頁 SelectLimit、快取 CacheExecute、下拉選單 GetMenu、日期/字串格式化 DBDate/qstr
  • **效能**:比舊 mysql_* 函數快,支援持久連線

快速上手

<?php
require_once 'adodb.inc.php';

// 方式一:傳統連線
$db = NewADOConnection('mysqli');
$db->Connect('localhost', 'user', 'pwd', 'dbname');

// 方式二:DSN 字串 (類 PDO)
$dsn = 'mysqli://user:pwd@localhost/dbname?charset=utf8mb4';
$db = NewADOConnection($dsn);

// 設定擷取模式 (預設數字索引)
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC; // 關聯陣列
// ADODB_FETCH_NUM  數字索引
// ADODB_FETCH_BOTH 兩者皆有

// 查詢
$rs = $db->Execute("SELECT id, name, email FROM users WHERE active=1");
if (!$rs) die($db->ErrorMsg());

// 迴圈讀取
while (!$rs->EOF) {
    echo "{$rs->fields['name']} <{$rs->fields['email']}><br>";
    $rs->MoveNext();
}
$rs->Close();
$db->Close();

進階功能詳解

1. 智慧插入/更新 (自動處理日期、跳脫)

$sql = "INSERT INTO events (id, event_date, note) VALUES (?, ?, ?)";
$db->Execute($sql, [3, $db->DBDate(time()), $db->qstr("Don't worry")]);
// DBDate() 自動轉換為目標資料庫日期格式
// qstr() 自動處理單引號跳脫 (MySQL: \', PostgreSQL: '', SQL Server: '')

2. 取得完整結果陣列

$arr = $db->GetAll("SELECT * FROM products WHERE stock>0");
// $arr = [[id=>1, name=>'...', stock=>10], ...]

// 快取版本 (秒數)
$arr = $db->CacheGetAll(300, "SELECT * FROM products WHERE stock>0");

3. 跨資料庫分頁

$page = 3; $perPage = 20;
$rs = $db->SelectLimit("SELECT * FROM logs ORDER BY created DESC", $perPage, ($page-1)*$perPage);
// MySQL: LIMIT offset, rows
// PostgreSQL: LIMIT rows OFFSET offset
// Oracle: ROWNUM 包裹
// SQL Server: OFFSET ... ROWS FETCH NEXT ... ROWS
// ADODB 自動轉換!

4. RecordSet 實用方法

方法說明
MoveNext()移至下一筆
Move($pos)移至指定位置 (0-based)
MoveFirst() / MoveLast()首/尾筆
GetArray()一次取得所有列陣列
RecordCount()筆數 (部分驅動不支援回傳 -1)
FieldCount()欄位數
FetchField($offset)取得欄位中繼資料 (name, type, max_length)
MetaType($type, $maxlen)標準化型別: C(字串), X(長文), B(Blob), D(日期), T(時間戳), L(布林), I(整數), N(數值)

5. 快取支援

$ADODB_CACHE_DIR = '/tmp/adodb_cache'; // 需可寫
$rs = $db->CacheExecute(600, "SELECT * FROM big_table"); // 10 分鐘快取
$rs = $db->CacheSelectLimit(600, "SELECT * FROM big_table", 50, 0);

6. HTML 表格輸出 (除錯用)

include_once 'tohtml.inc.php'; // 含 rs2html()
rs2html($rs); // 直接印出 <table>...

7. Session 儲存於資料庫

include_once 'adodb/session/adodb-session2.php';
ADODB_Session::config('mysqli', '', 'localhost', 'user', 'pwd', 'sessions');
session_start(); // 之後 $_SESSION 自動存入 sessions 表

商業授權

ADODB 採 **LGPL / BSD 雙授權**,允許商業軟體嵌入且**不需開源自有代碼**,鼓勵商業使用。

官方資源

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