PHP 大会日本 2024

IBM DB2 函数

目录

添加注释

用户贡献的注释 3 条注释

igtoth at gmail dot com
10 年前
// IBM DB2 函数类似于 MySQL(基于 ODBC)
// "Ighor Toth" <[email protected]>
// 日期:2014 年 08 月 05 日

// 用法
// db2_connect(verbose,instance,username,password); -> 如果未声明,则还读取配置文件 db2.conf.inc.php
// db2_query(db2_connect_return,sql)
// db2_fetch_array(result);
// db2_fetch_object(result);
// db2_display_table(db2_connect_return,sql); // 仅选择

function db2_connect($verbose = null,$db2name = null,$username = null,$password = null) {
if(!isset($verbose)){
$verbose = TRUE; // TRUE 或 FALSE,如果未设置则为 TRUE
}
if(!isset($db2name)){ // 未声明
include("db2.conf.inc.php"); // 检查配置文件
if(!isset($db2name)){
if ($verbose == TRUE){
echo ("未选择 DB2 实例");
exit();
} else {
exit();
}
}
} else if (!isset($username)){
echo ("未指定 DB2 实例用户名");
exit();
}
$db2conn = odbc_connect($db2name, $username, $password);
if (($verbose == TRUE) && ($db2conn == 0)) {
echo("连接到数据库失败。");
$sqlerror = odbc_errormsg($db2conn);
echo($sqlerror);
}
return($db2conn);
}

function db2_query($db2conn,$sql){
$result = odbc_exec($db2conn, $sql);
if ($result == 0) {
echo("QUERY = '$sql' 失败。<br>\n");
$sqlerror = odbc_errormsg($db2conn);
echo($sqlerror);
} else {
// odbc_result_all 打印结果集 ID 作为 HTML 表格中的所有行
// for a result set ID as an HTML table
return $result;
}
}

function db2_fetch_array($result, $rownumber=null){
$array = array();
if (!($cols = odbc_fetch_into($result, $result_array, $rownumber))) {
return false;
}
for ($i = 1; $i <= $cols; $i++) {
$array[odbc_field_name($result, $i)] = $result_array[$i - 1];
}
return $array;
}

function db2_fetch_object($result){
if(function_exists("db2_fetch_object")) return db2_fetch_object($result);
$rs = array();
$rs_obj = false;
if( odbc_fetch_into($result, $rs) ){
foreach( $rs as $key=>$value ){
$fkey = odbc_field_name($result, $key+1);
$rs_obj->$fkey = trim($value);
}
}
return $rs_obj;
}

function db2_display_table($db2conn,$sql) {
// 从表中选择所有行
if(!isset($db2conn)||!isset($sql)){
echo("错误 db2_display_table:函数缺少参数");
exit();
}
$check = explode(" ",$sql);
if($check[0]!="SELECT"){
echo("错误 db2_display_table:不是 SELECT SQL 查询");
}
if ($db2conn != 0) {
// odbc_exec 如果语句失败则返回 0;
// 否则返回结果集 ID
$result = odbc_exec($db2conn, $sql);
if ($result == 0) {
echo("SELECT 语句失败。");
$sqlerror = odbc_errormsg($db2conn);
echo($sqlerror);
} else {
// odbc_result_all 打印结果集 ID 作为 HTML 表格中的所有行
// for a result set ID as an HTML table
odbc_result_all($result);
}
}
}
Richard dot Ablewhite at gmail dot com
16 年前
似乎有很多好的文档
供 Linux 用户编译带有 DB2 支持的 PHP,
但 Windows 的相关说明很少。

您无需安装完整的 DB2 客户端即可获得 DB2
与 DB2 协作,您只需要 IBM 数据
用于 ODBC、CLI 和 .NET 的服务器驱动程序,它仅
16.1 兆。

您可以从此处下载驱动程序

直接链接
ftp://ftp.software.ibm.com/ps/products/db2/fixes2/englsh-us/
db2_v95/dsdriver/fp2/v9.5fp2_nt32_dsdriver_EN.exe

主页
http://www-01.ibm.com/support/docview.wss?rs=71&uid=swg21287889

这包括所需的驱动程序和 PHP
dll php_ibm_db2_5.2.2.dll

安装驱动程序后,不会设置正确的
路径环境变量,
因此,将以下内容添加到您的路径中

C:\Program Files\IBM\IBM DATA SERVER DRIVER\bin

完成后,一切就应该可以正常工作了!无需巨大的
400 兆客户端下载。

这些驱动程序的另一个优点是您
无需安装它们,
您可以简单地将 bin 目录复制到任何服务器,
将其添加到您的路径中,它就可以工作了。
这对于任何开发 PHP-GTK 应用程序的人来说都非常棒,
我将 bin 目录复制到我的 php-gkt2 目录中
并使用以下批处理脚本执行

path = %PATH%;.\IBM DATA SERVER DRIVER\bin
php-win.exe %*

这让我可以推出轻量级的 DB2 客户端桌面
无需安装的应用程序,
可以从一台 PC 复制到另一台 PC 或通过
网络或 USB 闪存盘运行。

由于您只安装了客户端驱动程序,因此您将无法
编目数据库,
因此始终使用完整的连接字符串。这是一个
帮助您入门的简短代码片段

$database = 'databasename';
$user = 'user';
$password = 'password';
$hostname = '127.0.0.1';
$port = 50000;

$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;" .
"HOSTNAME=$hostname;PORT=$port;".
"PROTOCOL=TCPIP;UID=$user;PWD=$password;";
$conn = db2_connect($conn_string, '', '');

$query = 'SELECT * FROM TABLE';
$res = db2_prepare($conn, $query);
db2_execute($res);

while ($row = db2_fetch_array($res)) {
print_r($row);
}
Exi
16 年前
DB/2 运行时客户端可以在此处找到
http://www-1.ibm.com/support/docview.wss?rs=71&uid=swg21255394
在页面下方选择“适用于 Windows 的运行时客户端可安装程序”并下载。
其他平台(包括 64 位 Windows)的客户端也可从该页面获得。
To Top