早期 PHP 開發者常直接使用 mysql_connect、mysql_query、mysql_fetch_array 等函式,不僅參數多、程式碼冗長,每支程式還得硬編碼資料庫名稱、帳號、密碼,維護極度不便。
PHPLIB 是早期知名的 PHP 元件庫,其 DBSQL 類將資料庫操作封裝為直觀的物件導向介面,大幅簡化開發流程。取得方式有二:
DBSQL 類開啟 db.php,約第 138 行,設定四個參數:
$Host = "localhost";
$Database = "mydb";
$User = "root";
$Password = "secret";
<?php
require "db.php";
$db = new DBSQL;
$db->connect();
if ($db->Link_ID) {
$db->query("SELECT id, name FROM contact WHERE id > 100 AND id < 200");
if ($db->nf()) {
while ($db->next_record()) {
echo "id=" . $db->f("id") . "<br>";
echo "name=";
$db->p("name"); // 直接輸出
echo "<br>";
}
}
$db->free_result();
}
?>
| 行號 | 說明 |
|---|---|
| 01 | 引入類別檔 |
| 02 | 實例化 DBSQL |
| 03 | 連線資料庫(相當於 mysql_pconnect) |
| 04 | 檢查 Link_ID 確認連線成功 |
| 05 | 執行 SQL 查詢 |
| 06 | nf() 取得筆數(同 mysql_num_rows) |
| 07 | next_record() 移動指標,到末尾回傳 false |
| 08 | f("欄位名") 取得當前列指定欄位值 |
| 11 | p("欄位名") 直接輸出欄位值 |
| 13 | free_result() 釋放記憶體 |
Auto_free = true:查詢結束自動釋放結果集DebugMode = true:自動印出執行的 SQL,除錯神器seek($offset):移動結果指標num_rows():同 nf()metadata($table):取得資料表結構陣列雖然 PHPLIB 早已停止維護,但 DBSQL 的設計理念——「封裝連線細節、提供流暢介面、支援除錯模式」——深深影響後續的 ADOdb、Pear DB、Zend_Db 以至現代的 Eloquent/Doctrine。理解其演進歷程,有助於掌握現代 ORM 的核心設計動機。