最近IBM推出了一個令人十分震驚的資料產品DB2 Express C。這個產品的效能和其他的DB2版本差不多,而更吸引眼球的是它竟然是完全免費的。這對於以MySQL為首的開來源資料庫是一個不小的衝擊,恐怕以後LAMP(Linux+Apache+MySQL+PHP)要變成LADP(Linux+Apache+DB2+PHP)了。為了提前應對這個變化,讓我們先來看一看PHP操作DB2 Express C的各種方法。
PHP在它發展的13年的時間演化出了非常多的資料庫介面。本文就以Windows+PHP5.2為例來討論在PHP中常用的五種操作DB2 Express C的方式。
在討論之前,讓我們先使用下面的DB2 SQL語句建立一個表,在本文中將會經常使用這個表。
create table mytablea ...{ id int primary key, name varchar(20) not null, age int not null, phone varchar(30) not null, salary int }
|
一、ODBC方式
DB2 Express C和其他的資料庫(SQL Server、Oracle)一樣,也提供了ODBC驅動。但DB2的ODBC驅動並未隨安裝程式打包,在使用時需要從IBM的網站下載。網址如下:http://www.ibm.com/developerworks/cn/db2/v9/index_download.html。
PHP從3.0.6開始引入了訪問ODBC API的函數。所有的訪問ODBC API的函數都以odbc_開頭。在使用這些函數之前,必須在本機上建立一個使用者或系統的DB2 ODBC資料來源。1所示。本文所建立的資料來源名是mydb2。
| 498)this.width=498;' onmousewheel = 'javascript:return big(this)' src="/files/uploadimg/20070308/1219580.jpg"> |
| 圖1 |
首先使用odbc_connect函數串連mydb2資料來源。odbc_connect函數的定義如下:
odbc_connect ( "資料來源名", "使用者名稱", "密碼","遊標類型"[可選])
|
下面是串連mydb2的語句。
$conn = odbc_connect("mydb2", "db2admin", "mypassword",SQL_CUR_USE_ODBC );
|
其中db2admin是DB2 Express C在安裝時預設的使用者名稱。
PHP還為我們提供了另外一個帶緩衝的串連資料庫的方法。odbc_pconnect。這個方法和odbc_connect的差不多,只是在當前php檔案執行完後,這個串連並不釋放。如果下一次仍然使用mydb2資料來源的話,將繼續使用這個串連。這樣可以提高Web程式的執行效率。
一般對資料庫的操作無外乎兩種,一是執行如delete、update和insert等不返回結果的SQL,另外一種是執行返回結果的SQL語句,如select。
第一種情況可以使用odbc_do來執行。
odbc_do($conn, "delete * from mytable where id > 1000"); odbc_do($conn, "insert into mytable values(2000, 'mike', 30, '12345678', 3000)");
|
第二種情況可以使用odbc_exec來執行。
$result = odbc_exec($conn, "select * from mytable where id = 2000");
|
如果odbc_exec執行成功,則返回查詢的結果。
輸出$result的方法很多,在這裡我只給出將結果轉換成數組的方法,其他的方法請參閱PHP手冊。
var $fetch=array(); fetch=odbc_fetch_array($result, 2); // 將第2行的每個欄位的值儲存在數組fetch中 $field1 = odbc_result($Query_ID, 1); $field2 = odbc_result($Query_ID, "salary"); print $field1 . "," . $field2;
|
其中odbc_result既可以根據欄位的索引,又可以根據欄位的名得到欄位值。
最後使用odbc_close關閉資料庫連接。
1
http://www.bkjia.com/PHPjc/446810.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/446810.htmlTechArticle最近IBM推出了一個令人十分震驚的資料產品DB2 Express C。這個產品的效能和其他的DB2版本差不多,而更吸引眼球的是它竟然是完全免費的。這...