本想學pear的,可是網路上看到的幾篇貼文對adodb的評價相當高,所以改學了這篇。
ADODB的優點有這幾個(網上說的,不是我說的):
1、速度比pear快一倍;
2、支援的資料庫類型比pear多很多,甚至可以支援ACCESS;
3、無須安裝,無須伺服器支援(對新手來說,這點很重要吧)
不知道adodb是什麼或是想下載adodb的朋友可以去這個連結看看:http:/ /www.phpe.net/class/106.shtml
另外,如果哪位兄弟翻譯了README的全文或知道哪裡有譯文請給我回個帖,謝謝。
Tutorial
Example 1: Select Statement
任務: 連接一個名為Northwind的Access資料庫, 顯示 每個記錄 (ADOConnection)物件, 並用它來連接一個資料庫. 這個連接採用PConnect 方法, 這是一個持久 連接. 當我們要查詢資料 庫時, 我們可以隨時調 用這個連接的Execute()函數. 它會傳回一個ADORecordSet物件 which is actually a cursor that holds the current row in the array fields[]. 我們使用MoveNext()從一個記錄轉向下一個記錄 . , 它可以控制顯示的記錄數(如只顯示前十筆記錄 ,可用作分頁顯示 ).
PHP:---------------------- -------------------------------------------------- --------
include('adodb.inc.php'); #載入ADOdb
$conn = &ADONewConnection('access'); >$conn->PConnect('northwind'); # 連接到一個名為northwind的MS-Access資料庫
$recordSet = &$conn->Execute('select * from products');中搜尋所有資料
if (!$recordSet)
print $conn->ErrorMsg(); //若資料搜尋發生錯誤顯示錯誤訊息
) {
print $recordSet->fields[0].' '.$recordSet->fields[1].'
';
$recordSet->MoveNext(); //指向下一個記錄
} //清單顯示資料
$recordSet->Close(); //可選
$conn->Close(); //可選
?>
--- -------------------------------------------------- ---------------------------
$recordSet在$recordSet->fields中傳回目前陣列, 對欄位進行數字索引(從0開始). 我們用MoveNext() 函數移動到下一個記錄 . 當資料庫搜尋到結尾時EOF property被 設定 為true. 如果Execute()發生錯誤 , recordset回傳flase.
$recordSet-ds[]數組產生於PHP的資料庫擴充。有些資料庫擴充只能按數字索引而不能按欄位名稱索引.如果堅持要使用欄位名稱索引,則應採用SetFetchMode函數.無論採用哪種格式索引,recordset都可以由Execute()或SelectLimit()建立。
PHP:--------------------------------------------- -----------------------------------
$db->SetFetchMode(ADODB_FETCH_NUM);
$rs1 = $db->Execute('select * from table'); //採用數位索引
$db->SetFetchMode(ADODB_FETCH_ASSOC);
$rs table'); //採用欄位名稱索引
print_r($rs1->fields); # shows array([0]=>'v0',[1] =>'v1')
print_r($ rs2->fields); # shows array(['col1']=>'v0',['col2'] =>'v1')------------------ -------------------------------------------------- ------------
如果要取得記錄號碼,你可以使用$recordSet->RecordCount()。如果沒有當前記錄則傳回-1。
實例 2: Advanced Select with Field Objects
搜尋表格,顯示前兩個欄位. 如果第二個欄位是時間或日期格式,則將其改為美國標準時間格式顯示.
PHP: -------------------------------------------------- ------------------------------
include('adodb.inc.php'); / //載入adodb
$conn = &ADONewConnection('access'); //新建一個連接
$conn->PConnect('northwind'); //連接名為northwind的MS-AccessAccess 🎠 >$recordSet = &$conn->Execute('select CustomerID,OrderDate from Orders'); //從Orders表搜尋CustomerID和OrderDate兩個欄位
if(!$recordSetSet)! >ErrorMsg(); //如果資料庫搜尋錯誤,顯示錯誤訊息
else
while (!$recordSet->EOF) {
$fld = $recordSet->第二個欄位賦值給$fld
$type = $recordSet->MetaType($fld->type); //取欄位值的格式
if ( $type == 'D'
if ( $type == == 'T')
print $recordSet->fields[0].' '.
$recordSet->UserDate($recordSet->fields[1],'m/d/Y').'
'; //若欄位格式為日期或時間型,使其以美國標準格式輸出
else
print $recordSet->fields[0].' '.$recordSet->fields[1 ].'
'; //否則以原樣輸出
$recordSet->MoveNext(); //指向下一個記錄
}
$recordSet->Close(); ////可選
$conn->Close(); //選購
?>
--------------------------- -------------------------------------------------- ---
在這個例子裡, 我們用FetchField()函數檢查了第二個字段的格式. 它返回了一個包含三個變量的對象
name: 字段名
type: 字段在其資料庫中的真實格式
max_length:欄位最大長度,部分資料庫不會回傳這個值,比如MYSQL,這種情況下max_length值等於-1.
我們使用MetaType()把欄位的資料庫格式轉換為標準的字段格式
C: 字符型字段,它應該可以在標籤下顯示.
X: 文本型字段,存放比較大的文本,一般作用於