SelectLimit、快取 CacheExecute、下拉選單 GetMenu、日期/字串格式化 DBDate/qstrmysql_* 函數快,支援持久連線<?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();
$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: '')
$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");
$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 自動轉換!
| 方法 | 說明 |
|---|---|
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(數值) |
$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);
include_once 'tohtml.inc.php'; // 含 rs2html()
rs2html($rs); // 直接印出 <table>...
include_once 'adodb/session/adodb-session2.php';
ADODB_Session::config('mysqli', '', 'localhost', 'user', 'pwd', 'sessions');
session_start(); // 之後 $_SESSION 自動存入 sessions 表
ADODB 採 **LGPL / BSD 雙授權**,允許商業軟體嵌入且**不需開源自有代碼**,鼓勵商業使用。