三、PECL扩展方式
PHP最大的卖点之一就是支持扩展功能,在PHP5中的ext目录是PHP的所有的扩展。而有一些扩展是专为数据库而做的。其中以db2_开头的一系列函数可以操作DB2 Express C。
PECL的DB2扩展和ODBC的函数名类似,如连接数据库的叫db2_connect。
db2_connect ( string database, string username, string password [, array options] )
上面是db2_connect的原型。其中第一个参数database并不是传统意义上的数据库名。它还可以包括用户名和密码等信息。下面是database字符串的完成格式。
如果在database中提供了用户名和密码,db2_connect中的username和password必须为null或空串。"DRIVER={IBM DB2 ODBC DRIVER};
DATABASE=database;HOSTNAME=hostname;PORT=port;PROTOCOL=TCPIP;UID=username;PWD=password;"
下面是两个连接DB2数据库的例子
database字符串中只含有数据库名
database字符串中含有用户名和密码<?php
$database = 'test';
$user = 'db2admin';
$password = 'mypassword';
$conn = db2_connect($database, $user, $password);
if ($conn) ...{
echo "数据库连接成功";
db2_close($conn);
}
else ...{
echo "数据库连接失败.";
}
?>
从DB2 Express C中取数据<?php
$database = 'test';
$user = 'db2admin';
$password = 'mypassword';
$hostname = 'localhost';
$port = 50000; // 为DB2 Express C的默认端口号
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;" .
"HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP;UID=$user;PWD=$password;";
$conn = db2_connect($conn_string, '', '');
if ($conn) ...{
echo "数据库连接成功";
db2_close($conn);
}
else ...{
echo "数据库连接成功";
}
?>
关闭数据库连接<?php
$database = 'test';
$user = 'db2admin';
$password = 'mypassword';
$conn = db2_connect($database, $user, $password);
$sql = "SELECT name FROM mytable
WHERE salary <= 2000
ORDER BY name DESC";
if ($conn) ...{
require_once('prepare.inc');
$stmt = db2_exec($conn, $sql, array('cursor' => DB2_SCROLLABLE));
while ($row = db2_fetch_array($stmt)) ...{
print "$row[0]\n";
}
}
?>
<?php
$conn = db2_connect('test', 'db2admin', 'mypassword');
$rc = db2_close($conn);
if ($rc) ...{
echo "数据库连接成功关闭.";
}
?>
