程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 使用PHP操作DB2 Express C的五種方法(1)

使用PHP操作DB2 Express C的五種方法(1)

編輯:關於PHP編程

最近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。

圖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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved