最近想把一個asp的網站改成php的,無奈空間不支持mysql數據庫,只好用access數據庫了,但以前都是用的php+mysql,php+access數據庫編程還真沒有做過.
感謝黨,感謝cctv,感謝搜索引擎,這不找到一編不錯的文章,特轉過來和大家分享.//php100.com
在PHP中連接Access有如下3種方式。 php程序員之家
(1)創建系統數據源,用PHP提供的ODBC函數即可。
php程序員之家
(2)同樣可以使用PHP的ODBC函數,但不創建數據源。
開放數據庫連接(Open DateBase Conection,ODBC)是Windows Open Server(開放服務)API(WOSA)產品之一。一個數據源是對數據庫的一個命名連接。對於應用程序要連接的不同類型的數據庫,都需要一個ODBC 驅動程序。ODBC API主要是為客戶/服務器的RDBMS使用設計的,但是ODBC驅動程序也可以用於連接桌面數據庫文件、工作表和平面文件。ODBC使用 Odbcinst.dll庫來設置和清除數據源。Odbcad32.exe是一個用於建立ODBC數據源的獨立的32位可執行應用程序,在控制面板中有其對應的圖標Control Panel。
php程序員站 //php100.com
ODBC驅動管理程序為數據源打開ODBC驅動程序並將 SQL語句傳送給驅動程序。在客戶/服務器RDBMS處理完一個select查詢后,ODBC驅動程序將值返回給應用程序。當執行一個insert、 update或delete語句時,驅動程序返回查詢所影響的行數。 //php100.com
下面介紹PHP使用ODBC連接Access 數據庫的方法。用$connstr="DRIVER= Microsoft Access Driver (*.mdb)來設置數據驅動,函數realpath()用來取得數據庫的相對路徑。利用該方法連接Access數據庫主要應用到PHP的 odbc_connect()函數,該函數聲明如下: //php100.com
以下為引用的內容:
resourse odbc_connect( string dsn, string user, string password [, int cursor_type])
dsn:系統dsn名稱
user:數據庫服務器某用戶名。
php程序員站
password:數據庫服務器某用戶密碼。 php程序員站
cursor_type:游標類型。
php程序員之家
代碼如下:
以下為引用的內容:
$connstr="DRIVER=Microsoft Access Driver (*.mdb);
DBQ=".realpath("bookinfo.mdb");
$connid=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC );
php程序員之家
(3)使用微軟的ADODB數據庫驅動。ActiveX Data Objects(ADO)是Microsoft開放數據庫應用程序的數據庫訪問技術。它被設計用來同新的數據訪問層OLE DB Provider一起協同工作,提供通用數據訪問(Universal Date Access)。OLE DB是一個低層的數據訪問接口,用它可以訪問各種數據源,包括傳統的關系型數據庫、電子郵件系統及自定義的商業對象。ADO技術大大簡化了OLE DB的操作,因為ADO封裝了OLE DB程序中使用的大量COM接口,所以ADO是一種高層的訪問技術。 php程序員站//php100.com
ADO技術基於通用對象模型(COM),它提供了多種語言的訪問技術。PHP是通過預先定義類COM來使用ADO方法操縱Access數據庫的。該類詳細說明如下:
以下為引用的內容:
string com::com( string module_name [, string server_name [, int codepage]])
module_name:被請求組件的名字或class-id。
server_name:DCOM服務器的名字。
Codepage:指定用於將PHP字符串轉換成UNICODE字符串的代碼頁,反之亦然。該參數的取值有CP_ACP、CP_MACCP、CP_OEMCP、CP_SYMBOL、CP_THREAD_ACP、CP_UTF7和CP_UTF8。
PHP利用com類並使用ADO方法訪問數據庫的代碼如下:
以下為引用的內容:
$conn = new com("ADODB.Connection");
$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("bookinfo.mdb ");
$conn->Open($connstr);
-------------------------------------------------------------------
<?PHP
/*
創建ADO連接
*/
$conn
= @
new
COM(
"ADODB.Connection"
)
or
die
(
"ADO Connection faild."
);
$connstr
=
"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="
.
realpath
(
"DATUM/cnbt.mdb"
);
$conn
->Open(
$connstr
);
/*
創建記錄集查詢
*/
$rs
= @
new
COM(
"ADODB.RecordSet"
);
$rs
->Open(
"select * from dbo_dirs"
,
$conn
,1,3);
/*
循環讀取數據
*/
while
(!
$rs
->eof){
echo
"$rs->Fields["
title"]->Value;
echo
"<br/>"
;
$rs
->Movenext();
//將記錄集指針下移
}
$rs
->close();
?>
|
<?php
$odbc = "Driver={Microsoft Access Driver (*.mdb)};Dbq=".realpath("test.mdb");
$conn = odbc_connect($odbc, '', '', SQL_CUR_USE_ODBC);
$sql ="select * from user";
$query = odbc_exec($conn, $sql);
$num = odbc_num_fields($query);
echo "<table><tr><th>ID</th><th>username</th><th>password</th></tr>";
while ($row = odbc_fetch_row($query))
{
echo "<tr>";
echo "<td>".odbc_result($query,"id")."</td>";
echo "<td>".odbc_result($query,"username")."</td>";
echo "<td>".odbc_result($query,"password")."</td>";
echo "</tr>";
}
echo "</table>";
?>