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

ADODB for PHP 入門教程:跨數據庫抽象層安裝、連接、CRUD、預處理與分頁組件

     編輯:MySQL 資料庫相關知識

什麼是 ADODB

Active Data Objects DataBase:PHP 資料庫抽象層,統一 API 屏蔽底層差異(MySQL/PostgreSQL/Oracle/SQL Server/Access/ODBC 等),遷移數據庫只需改驅動名稱。

1. 安裝與引入

# 下載解壓至項目目錄
include_once('adodb/adodb.inc.php');  // 核心文件,必須引入

按需引入擴展:

  • adodb-pager.inc.php:分頁顯示
  • adodb-session.php:Session 存數據庫
  • adodb-errorhandler.inc.php:自定義錯誤處理
  • tohtml.inc.php:記錄集直接輸出 HTML 表格
  • toexport.inc.php:導出 CSV/Tab 文本

2. 建立連接對象

$conn = &ADONewConnection('mysql');  // 驅動名稱:mysql/postgres/oci8/mssql/ado/odbc...
$conn->debug = true;  // 開啟調試,輸出執行的 SQL
$conn->Connect('localhost', 'user', 'pass', 'dbname');
// 或持久連接:$conn->PConnect(...)

3. 執行 SQL 與錯誤處理

$sql = "INSERT INTO t (name, age) VALUES ('abc', 18)";
$rs = $conn->Execute($sql);
if (!$rs) die($conn->ErrorMsg());  // 失敗輸出錯誤信息

4. 智能生成 INSERT/UPDATE SQL:GetInsertSQL / GetUpdateSQL

// 1. 取一條空記錄作為模板
$rs = $conn->Execute("SELECT * FROM t WHERE 1=0");
// 2. 準備數據數組
$data = array('name' => 'john', 'age' => 28);
// 3. 自動生成 INSERT 語句
$insertSQL = $conn->GetInsertSQL($rs, $data);
// INSERT INTO t (name, age) VALUES ('john', 28)
$conn->Execute($insertSQL);
  • 自動處理字段引號、轉義、NULL 值、類型轉換。
  • GetUpdateSQL 同理,需先查出目標記錄。

5. 查詢與記錄集遍歷

$rs = $conn->Execute('SELECT * FROM t');
if ($rs) {
    while (!$rs->EOF) {
        // 數字索引
        for ($i=0; $i<$rs->FieldCount(); $i++) echo $rs->fields[$i] . ' ';
        // 或關聯索引(需先設定全域模式)
        // $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
        // echo $rs->fields['name'];
        $rs->MoveNext();
    }
    $rs->Close();
}
$conn->Close();

6. FetchRow 簡化遍歷

$rs = $conn->Execute('SELECT * FROM t');
while ($arr = $rs->FetchRow()) {  // 內部自動 MoveNext
    echo $arr['name'] . ' ' . $arr['age'] . "<br>";
}

7. 關聯數組模式:ADODB_FETCH_ASSOC

$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;  // 全域設置,影響後續 Execute
$rs = $conn->Execute('SELECT * FROM t');
while (!$rs->EOF) {
    echo $rs->fields['name'] . ' ' . $rs->fields['age'];
    $rs->MoveNext();
}

8. 分頁組件:adodb-pager.inc.php

include('adodb/adodb-pager.inc.php');
$sql = "SELECT * FROM t ORDER BY id";
$pager = new ADODB_Pager($conn, $sql);
$pager->Render($rows_per_page=10);  // 直接輸出帶導航的 HTML 表格

9. 錯誤處理擴展

include('adodb/adodb-errorhandler.inc.php');
$conn->SetErrorHandler('myErrorHandler');
function myErrorHandler($msg, $sql) {
    error_log("SQL Error: $msg\nSQL: $sql");
    // 可發郵件、顯示友好頁面
}

遷移提示

ADODB 早期項目常見,新項目建議使用 PDO(原生、標準、性能更好)或成熟 ORM(Doctrine, Eloquent, Laravel DB)。ADODB 仍在維護但社區活躍度下降。

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