| 原生寫法 | ADODB 寫法 | 優勢 |
mysql_connect() | ADONewConnection('mysqli') | 統一介面支援 20+ 資料庫 |
mysql_query($sql) | $db->Execute($sql) | 回傳 RecordSet 物件,支援快取 |
mysql_fetch_assoc() | $rs->GetAssoc() / $rs->FetchRow() | 統一陣列/物件存取 |
mysql_insert_id() | $db->Insert_ID() | 跨資料庫自增 ID 獲取 |
mysql_affected_rows() | $db->Affected_Rows() | 統一影響行數 |
mysql_real_escape_string() | $db->qstr($val) | 自動處理引號跳脫差異 |
DATE_FORMAT() | $db->DBDate($timestamp) | 自動轉換目標資料庫日期格式 |
關鍵功能展示
1. 安全參數化查詢
$sql = "INSERT INTO logs (msg, created) VALUES (?, ?)";
$db->Execute($sql, [$userInput, $db->DBDate(time())]);
2. 分頁抽象
// MySQL: LIMIT 10 OFFSET 20
// PostgreSQL: LIMIT 10 OFFSET 20
// SQL Server: OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY
$rs = $db->SelectLimit("SELECT * FROM logs ORDER BY id DESC", 10, 20);
3. 結果集快取
// 快取 1 小時
$rs = $db->CacheExecute(3600, "SELECT * FROM config");
4. 欄位中繼資料標準化
$rs = $db->Execute("SELECT created_at FROM logs");
$f = $rs->FetchField(0);
echo $rs->MetaType($f->type, $f->max_length); // 輸出 'T' (Timestamp)
5. PHP Session 儲存於資料庫
require 'adodb/session/adodb-session2.php';
$options = ['driver' => 'mysqli', 'host' => 'localhost', 'database' => 'sessions'];
ADODB_Session::config($options);
session_start();
授權與商業使用
ADODB 採 LGPL 授權,允許商業閉源軟體動態連結使用,無需開源自身代碼。適合 ISV 產品跨資料庫交付。
- 上一篇文章: PHP + MySQL 分頁查詢完整模板:從基礎邏輯到效能優化
- 下一篇文章: MySQL TIMESTAMP 欄位實現「預設當前時間」與自動更新完全指南
Copyright ©
程式碼之家 All Rights Reserved