PHP 日本研討會 2024

IBM DB2 函數

目錄

新增註解

使用者貢獻的註解 3 個註解

3
igtoth at gmail dot com
10 年前
// 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);
}
}
}
1
Richard dot Ablewhite at gmail dot com
16 年前
關於 Linux 使用者編譯具 DB2 支援的 PHP
似乎有很多好的文件,
但關於 Windows 的註解卻很少。

您不需要安裝完整的 DB2 客戶端即可讓 DB2
與 DB2 一起運作,您只需要 IBM Data
Server Driver for ODBC, CLI, 和 .NET,它只有
16.1 MB。

您可以從這裡下載驅動程式

直接連結
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

一旦完成,一切應該都能正常運作!不需要下載
龐大的 400MB 客戶端程式。

這些驅動程式更棒的是您
不需要安裝它們,
您可以簡單地將 bin 目錄複製到任何伺服器,
並將其新增到您的路徑,它就能運作。
這對於任何開發 PHP-GTK 應用程式的人來說都很棒,
我會將 bin 目錄複製到我的 php-gkt2 目錄中
並使用以下批次指令碼執行

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

這讓我能夠推出輕量的 DB2 客戶端桌面
應用程式,它們不需要安裝,
可以直接從電腦複製到電腦或透過網路執行,或從 USB 隨身碟執行。
network or from USB stick.

由於您只安裝客戶端驅動程式,您將無法
編錄資料庫,
所以請務必使用完整的連線字串。這是一小段
程式碼來幫助您開始

$database = '資料庫名稱';
$user = '使用者';
$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 表格';
$res = db2_prepare($conn, $query);
db2_execute($res);

while ($row = db2_fetch_array($res)) {
print_r($row);
}
0
Exi
16 年前
DB/2 執行時期客戶端可以在這裡找到
http://www-1.ibm.com/support/docview.wss?rs=71&uid=swg21255394
請在該頁面下方選取「Runtime Client Installable for Windows」並下載。
其他平台(包括 64 位元 Windows)的客戶端也可從該頁面取得。
To Top