(1)創(chuàng)建系統(tǒng)數(shù)據(jù)源,用PHP提供的ODBC函數(shù)即可。
(2)同樣可以使用PHP的ODBC函數(shù),但不創(chuàng)建數(shù)據(jù)源。開放數(shù)據(jù)庫連接(Open DateBaseConection,ODBC)是Windows Open Server(開放服務(wù))API(WOSA)產(chǎn)品之一。一個(gè)數(shù)據(jù)源是對數(shù)據(jù)庫的一個(gè)命名連接。對于應(yīng)用程序要連接的不同類型的數(shù)據(jù)庫,都需要一個(gè)ODBC驅(qū)動程序。ODBC API主要是為客戶/服務(wù)器的RDBMS使用設(shè)計(jì)的,但是ODBC驅(qū)動程序也可以用于連接桌面數(shù)據(jù)庫文件、工作表和平面文件。ODBC使用Odbcinst.dll庫來設(shè)置和清除數(shù)據(jù)源。Odbcad32.exe是一個(gè)用于建立ODBC數(shù)據(jù)源的獨(dú)立的32位可執(zhí)行應(yīng)用程序,在控制面板中有其對應(yīng)的圖標(biāo)ControlPanel。
ODBC驅(qū)動管理程序?yàn)閿?shù)據(jù)源打開ODBC驅(qū)動程序并將SQL語句傳送給驅(qū)動程序。在客戶/服務(wù)器RDBMS處理完一個(gè)select查詢后,ODBC驅(qū)動程序?qū)⒅捣祷亟o應(yīng)用程序。當(dāng)執(zhí)行一個(gè)insert、update或delete語句時(shí),驅(qū)動程序返回查詢所影響的行數(shù)。
下面介紹PHP使用ODBC連接Access數(shù)據(jù)庫的方法。用$connstr="DRIVER= Microsoft Access Driver(*.mdb)來設(shè)置數(shù)據(jù)驅(qū)動,函數(shù)realpath()用來取得數(shù)據(jù)庫的相對路徑。利用該方法連接Access數(shù)據(jù)庫主要應(yīng)用到PHP的odbc_connect()函數(shù),該函數(shù)聲明如下:
resourse odbc_connect( string dsn, string user,string password [, int cursor_type])
dsn:系統(tǒng)dsn名稱。
user:數(shù)據(jù)庫服務(wù)器某用戶名。
password:數(shù)據(jù)庫服務(wù)器某用戶密碼。
cursor_type:游標(biāo)類型。
代碼如下:
$connstr="DRIVER=Microsoft Access Driver(*.mdb);
DBQ=".realpath("bookinfo.mdb");
$connid=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC);
自己測試成功的代碼,使用PDO的ODBC連接,注意要在php.ini里取消pdo_odbc.dll的備注。
$db = new PDO("odbc:driver={microsoft access driver (*.mdb)};dbq=" . realpath("mydb.mdb")) or die("Connect Error");
$sql = "select top 10 * from postcode"; //按照access的寫法來
$rs = $db->query($sql);
while ($row = $rs->fetch()) { //不使用fetchall
echo $row["id"];
}
(3)使用微軟的ADODB數(shù)據(jù)庫驅(qū)動。ActiveX Data Objects(ADO)是Microsoft開放數(shù)據(jù)庫應(yīng)用程序的數(shù)據(jù)庫訪問技術(shù)。它被設(shè)計(jì)用來同新的數(shù)據(jù)訪問層OLEDB Provider一起協(xié)同工作,提供通用數(shù)據(jù)訪問(Universal Date Access)。OLE DB是一個(gè)低層的數(shù)據(jù)訪問接口,用它可以訪問各種數(shù)據(jù)源,包括傳統(tǒng)的關(guān)系型數(shù)據(jù)庫、電子郵件系統(tǒng)及自定義的商業(yè)對象。ADO技術(shù)大大簡化了OLE DB的操作,因?yàn)锳DO封裝了OLEDB程序中使用的大量COM接口,所以ADO是一種高層的訪問技術(shù)。
ADO技術(shù)基于通用對象模型(COM),它提供了多種語言的訪問技術(shù)。PHP是通過預(yù)先定義類COM來使用ADO方法操縱Access數(shù)據(jù)庫的。該類詳細(xì)說明如下:
string com::com( stringmodule_name [, string server_name [, int codepage]])
module_name:被請求組件的名字或class-id。
server_name:DCOM服務(wù)器的名字。
Codepage:指定用于將PHP字符串轉(zhuǎn)換成UNICODE字符串的代碼頁,反之亦然。該參數(shù)的取值有CP_ACP、CP_MACCP、CP_OEMCP、CP_SYMBOL、CP_THREAD_ACP、CP_UTF7和CP_UTF8。
PHP利用com類并使用ADO方法訪問數(shù)據(jù)庫的代碼如下:
$conn = newcom("ADODB.Connection");
$connstr ="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("bookinfo.mdb");
$conn->Open($connstr);
聯(lián)系客服