// 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);
}
}
}