// IBM DB2 函數,如 MySQL (基於 ODBC)
// "Ighor Toth" <igtoth@gmail.com>
// 日期:2014/05/08
// 用法
// 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("查詢語法 = '$sql' 失敗。<br>\n");
$sqlerror = odbc_errormsg($db2conn);
echo($sqlerror);
} else {
// odbc_result_all 會將結果集中的所有列
// 以 HTML 表格的形式印出
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 會將結果集中的所有列
// 以 HTML 表格的形式印出
odbc_result_all($result);
}
}
}