ADOdb 是 PHP 中知名的資料庫抽象層函式庫,支援多種資料庫系統,讓開發者能以統一介面操作不同資料庫。本文將詳細說明如何下載、安裝 ADOdb,並提供連接 Oracle、PostgreSQL、MySQL、Access、SQL Server、DB2 等主流資料庫的完整程式碼範例,最後附上一個可實際應用的多資料庫通用連線函數。
首先從官方網站下載 ADOdb 套件,解壓縮後將 adodb 目錄放入專案適當位置。在 PHP 程式中使用 include("adodb/adodb.inc.php"); 即可載入核心類別。
<?php
include("adodb/adodb.inc.php");
$conn = &NewADOConnection('oci8');
$conn->Connect($DBServer, $DBUser, $DBPass);
?>
方式一:分離參數
<?php
include("adodb/adodb.inc.php");
$conn = NewADOConnection('postgres');
$conn->Connect('localhost', 'root', 'pass', 'mydb');
?>
方式二:使用 DSN 字串
<?php
include("adodb/adodb.inc.php");
$conn = NewADOConnection('postgres');
$conn->Connect('host=localhost port=5432 dbname=mydb');
?>
方式一:DSN 字串
<?php
include("adodb/adodb.inc.php");
$conn = NewADOConnection('mysql://root:1981427@localhost/test');
?>
方式二:分離參數
<?php
include("adodb/adodb.inc.php");
$conn = NewADOConnection('mysql');
$conn->Connect('localhost', 'root', '1981427', 'test');
?>
<?php
include("adodb/adodb.inc.php");
$conn = NewADOConnection('access');
$conn->Connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=d://mydb.mdb;Uid=Admin;Pwd=;");
?>
透過 ODBC 連接
<?php
include("adodb/adodb.inc.php");
$conn = NewADOConnection('odbc_mssql');
$conn->Connect("Driver={SQL Server};Server=localhost;Database=mydb;", 'username', 'password');
?>
使用 mssql 驅動
<?php
include("adodb/adodb.inc.php");
$conn = NewADOConnection('mssql');
$conn->Connect("localhost", 'username', 'password', 'mydb');
?>
<?php
include("adodb/adodb.inc.php");
$conn = NewADOConnection('db2');
$conn->Connect("driver={IBM db2 odbc DRIVER};database=mydb;hostname=localhost;port=50000;protocol=TCPIP;uid=root;pwd=pass");
?>
以下封裝一個 DBConnect() 函數,支援依據傳入的資料庫類型代碼自動建立連線並執行 SQL,回傳查詢結果字串:
public function DBConnect($DBType, $DBServer, $DBUser, $DBPass, $DBName, $sqlStr) {
$conn = null;
$result = null;
$output = "";
switch ($DBType) {
case 0: // SQL Server (ODBC)
$conn = &NewADOConnection('odbc_mssql');
$conn->Connect("Driver={SQL Server};Server=".$DBServer.";Database=".$DBName.";Uid=".$DBUser.";Pwd=".$DBPass.";");
break;
case 1: // Oracle
$conn = &NewADOConnection('oci8');
$conn->Connect($DBServer, $DBUser, $DBPass);
break;
case 2: // Access
$conn = &NewADOConnection('access');
$conn->Connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=".$DBName.";Uid=".$DBUser.";Pwd=".$DBPass.";");
break;
case 3: // MySQL
$conn = NewADOConnection('mysql');
$conn->Connect($DBServer, $DBUser, $DBPass, $DBName);
break;
default:
die("抱歉,暫不支援此資料庫類型,請檢查配置!");
}
$result = $conn->Execute($sqlStr);
if ($result === false) {
die("查詢失敗:" . $conn->ErrorMsg());
}
while (!$result->EOF) {
$max = $result->fieldcount();
for ($i = 0; $i < $max; $i++) {
$output .= $result->fields[$i] . ' ';
}
$result->MoveNext();
}
$conn->Close();
return trim($output);
}
public function ExecuteSql($sqlStr) {
$DBType = 1; // Oracle
$DBServer = "arron";
$DBUser = "system";
$DBPass = "abcde";
$DBName = "";
return $this->DBConnect($DBType, $DBServer, $DBUser, $DBPass, $DBName, $sqlStr);
}
ADOdb 提供統一介面操作多種資料庫,適合需要跨資料庫平台的專案。實務上建議搭配設定檔管理連線參數,並加入例外處理與日誌記錄,提升系統穩定度與可維護性。