PEAR DB 是早期 PHP 專案常用的資料庫抽象層,提供統一介面操作 MySQL、PostgreSQL 等多種資料庫。雖然現代專案多改用 PDO 或 ORM,但在維護舊系統時仍常遇到。
<?php
require_once "DB.php";
$conn = DB::connect("mysql://root:1981427@localhost/test");
if (DB::isError($conn)) {
die("資料庫連線失敗:" . $conn->getMessage());
}
echo "資料庫連線成功";
?>
<?php
require_once "DB.php";
$conn = DB::connect("mysql://root:1981427@localhost/test");
if (DB::isError($conn)) {
die("連線失敗:" . $conn->getMessage());
}
$rs = $conn->query("SELECT id, username, password FROM tablename1");
if (DB::isError($rs)) {
die("查詢失敗:" . $rs->getMessage());
}
while ($rs->fetchInto($rows)) {
echo "編號:{$rows[0]}<br>";
echo "姓名:{$rows[1]}<br>";
echo "密碼:{$rows[2]}<br>";
echo "<hr>";
}
?>
<?php
require_once "DB.php";
$conn = DB::connect("mysql://root:1981427@localhost/test");
if (DB::isError($conn)) {
die("連線失敗:" . $conn->getMessage());
}
// 從第 2 筆開始取 5 筆(即第 3~7 筆)
$rs = $conn->limitQuery("SELECT id, username, password FROM tablename1", 2, 5);
if (DB::isError($rs)) {
die("查詢失敗:" . $rs->getMessage());
}
while ($rs->fetchInto($rows)) {
echo "編號:{$rows[0]}<br>";
echo "姓名:{$rows[1]}<br>";
echo "密碼:{$rows[2]}<br>";
echo "<hr>";
}
?>
<?php
require_once "DB.php";
$conn = DB::connect("mysql://root:1981427@localhost/test");
if (DB::isError($conn)) {
die("連線失敗:" . $conn->getMessage());
}
$stmt = $conn->prepare("UPDATE tablename1 SET password = ? WHERE id = ?");
if (DB::isError($stmt)) {
die("準備失敗:" . $stmt->getMessage());
}
$result = $conn->execute($stmt, array('Susan', 1));
if (DB::isError($result)) {
die("更新失敗:" . $result->getMessage());
}
echo "資料更新成功";
?>
| 方法 | 用途 |
|---|---|
DB::connect() | 建立連線,回傳連線物件或錯誤物件 |
DB::isError() | 檢查回傳值是否為錯誤物件 |
$conn->query() | 執行 SQL,回傳結果集或錯誤 |
$conn->limitQuery() | 支援 OFFSET/LIMIT 的分頁查詢 |
$conn->prepare() | 預處理 SQL 陳述式,回傳 statement handle |
$conn->execute() | 執行預處理陳述式,可傳入參數陣列 |
$rs->fetchInto() | 將下一列資料存入陣列變數 |
新專案建議直接使用 PDO 或成熟的 ORM(如 Eloquent、Doctrine),PEAR DB 已不再積極維護且缺乏現代安全特性(如預處理參數綁定的完整支援)。