最近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版本差不多,而更吸引眼球的是它竟然是完全免费的。这...