使用帶有 Apache 2 的 PHP 的統一 ODBC 擴展
簡介:學習如何配置 IBM® Cloudscape™ 10.0 和 IBM DB2® Universal Database™(DB2 UDB)Version 8.2 服務器,以便從 PHP 4.x 和 PHP 5.x 進行訪問。使用統一的 ODBC 擴展編寫數據庫應用程序。克服可滾動游標導致的常見性能問題,並避免存儲過程中的功能限制。 PHP 的統一 ODBC 擴展提供了一個公共接口,用於開發通過開放式數據庫連接(Open Database Connectivity,ODBC)驅動程序連接到數據庫的 PHP 應用程序。DB2 客戶機包括一個 ODBC 驅動程序, 允許您訪問 Apache Derby、Cloudscape、DB2 UDB for Linux™, UNIX® and Windows® 以 及 DB2 UDB for iSeries™ and zSeries® 服務器中的數據。更妙的是,您可以直接在 DB2 調 用級接口(DB2 Call Level Interface,DB2 CLI)上編譯統一 ODBC 擴展,使 PHP 應用程序避免 ODBC Driver Manager 開銷,直接與目標數據庫服務器進行通信。
介紹 PHP:超文本處理器
PHP :超文本處理器(PHP:Hypertext Processor),是一種創建 Web 內容的、功能強大且越來越受歡迎的 服務器端腳本語言。可移植性是 PHP 受到歡迎的主要原因之一:
可以在 Microsoft Windows、 Linux、BSD、Macintosh OS X 和 UNIX 服務器上編譯和運行 PHP。
PHP 可以與包括 Apache 和 Microsoft IIS 在內的大多數普及 Web 服務器緊密集成,也可以用作獨立的 CGI 解釋器。
PHP 的源代碼可以免費獲取,您可以自由編寫和分發 PHP 應用程序,將其用於商業和非商業用途。
開放源碼社區積極支持圍繞 PHP 語言進行的開發,並在這方面做出了熱心貢獻。作為他們努力的結果, PHP 語言提供了一個令人印象深刻的擴展集合來提供各種功能,從 XML 轉換、動態生成圖像和 Adobe 可 移植文檔格式(Portable Document Format,PDF)文件,到支持 SOAP 客戶機和服務器。
在簡要 介紹 PHP 腳本編制之後,本文將描述如何將 PHP 編譯成支持 DB2 客戶機的動態裝入的 Apache 模塊。 文章的最後是幾個示例,這幾個示例將演示如何使用 PHP 連接 IBM Cloudscape 或 IBM DB2 Universal Database 服務器,如何向這些服務器中插入數據,以及如何從中選擇數據。本文更新了我的前一篇文章 ,將介紹堆棧各個方面的主要版本改進:從 PHP 4 到 PHP 5、從 Apache 1.3.x 到 2.0.x、從 DB2 UDB Version 7 到 Version 8,以及從基於 2.4 內核到基於 2.6 內核的 Linux 發行版本。
PHP 腳本 編制是如何工作的
PHP 基本上是一種服務器端腳本編制語言,它允許您將應用程序邏輯嵌入 HTML 頁面,或者用 PHP 函數創建整個 HTML 頁面。當 Web 服務器收到對某個 PHP 頁面的請求時,它就將控 制權轉交給 PHP 引擎。PHP 引擎裝入 PHP 頁面,執行該頁面內所有的 PHP 函數,然後將生成的 HTML 返回給 Web 服務器。
要在 Web 頁面內調用 PHP 函數,只需將 PHP 函數嵌入到常規的 HTML 源 代碼內即可。PHP 函數被嵌入到以 ?php 開始並以 ? 結尾的 HTML 樣式的標簽內。例如,<?php echo 'Hello!'; ?> 演示了對 PHP 函數 echo() 的調用。要在這個 PHP 標簽內包含多個函數,可 以使用分號(;)字符將這些函數分隔開。
當然,可以在一個 PHP 腳本內包含許多 PHP 標簽。為 了演示使用 PHP 編寫 Web 頁面是多麼的容易,下面給出了一段簡短的腳本,它將輸出從任意值開始到任 意值結束的一系列數字。
清單 1. 打印序列函數:print.php
<?php function print_sequence ($start, $stop, $increment) {
if ($start > $stop) {
return(FALSE);
}
elseif ($increment <= 0) {
return (FALSE);
}
else {
for ($i = $start; $i < $stop; $i = $i + $increment) {
print "$i ";
}
}
return(TRUE);
}
?>
<html><head>
<title>Counting from x to y</title>
</head><body bgcolor="white">
<h1>Counting from x to y</h1>
<p>Counting from 1 to 10 by 1: <? php print_sequence(1, 10, 1)?></p>
<p>Counting from 2 to 20 by 2: <? php print_sequence(2, 20, 2)?></p>
</body>
</html>