PHP 5資料物件 PDO 抽象層與Oracle

2021-04-13 07:24:37 字數 3026 閱讀 6906

一名新 php 資料物件 (pdo) 資料抽象層的原始開發人員為您簡要介紹該抽象層,重點講述與 oracle 一起執行的情況。

需要 php:5.0

需要其他:oracle 8 或更高版本客戶端庫

pdo 簡介

php 主要是由志願者完成的專案;儘管有少數一些固定的「核心」開發人員,但是我們沒有乙個人在全職受薪的開發 php。除此之外,我們分別位於世界不同地方,您可以想象長期開發的協調工作是何等困難。因此,php 主要是基於突發奇想的個人短期需求來發展的,其原因也多種多樣,有的是試驗,有的則是因為「明天有活要交」。儘管這樣通常每一步都會改善 php,但從長遠來看則是缺乏完整性 - 資料庫擴充套件就是乙個重要的例子。

在各種不同的資料擴充套件(oci、mysql、postgresql、mssql 等)之間根本沒有真正的一致性,甚至在某些情況下,在這些擴充套件內部也沒有真正的一致性。幾乎所有這些擴充套件都在使用與基礎資料庫 api 緊密相連的不同**完成著相同種類的任務。而且因為我們(php 核心開發人員和擴充套件開發人員)的人手非常有限,因此這就造成了**更加難以維護,從而為 php 帶來了很大的問題。

由於 php 越來越受歡迎並不斷成功,因此主要 php 資料庫擴充套件的維護者們參加了在德國舉行的 linuxtag 2003 大會,在會上我們交換了對 php 前景的看法。在討論 php 發展的隨機性時,我們確定了在 php 中進行資料庫訪問的一些目標:

·提供一種輕型、清晰、方便的 api

·統一各種不同 rdbms 庫的共有特性,但不排除更高階的特性。

·通過 php 指令碼提供可選的較大程度的抽象/相容性。

我們之所以提出了這種 php 資料物件 (pdo) 的概念,是因為我們希望通過採用 zend engine 2(php 5 的核心)先進的物件導向特性獲得該 api 的一些更優秀的效能。

php 中的資料抽象層概念一點都算不上新;在 google 中查詢「php database abstraction」會找到大約 83,200 個匹配項。它幾乎是許多 php 開發人員夢寐以求的,而其產生則部分歸因於我們不完整的 api。如果您曾經嘗試過使用第三方抽象層來完成任何真正重要的工作,通常會發現這些抽象層對於手頭的工作來說設計的功能過於強大了 - 或者表現為在使用前需要進行大量學習,或者表現為介面速度緩慢,引數需要經過多層指令碼函式呼叫才能到達資料庫自有的 api;通常是存在上述兩種表象。

為什麼這些抽象層會存在這種問題?這些抽象層總是在試圖完成太多的任務,甚至可能是不可能的任務。我們決定以實用為目標,僅將一些最常見的資料庫 api 特性作為我們的基礎,並使得 pdo 驅動程式能夠將它們特定於產品的特性暴露為常規擴充套件函式。

為什麼使用 pdo?

聽過有關資料庫抽象擴充套件謠傳的大多數人會立刻對 pdo 的擴充套件方面產生疑惑 - 我們是否要分析 sql,將其轉換為相應的後端方言呢?我們如何處理特性 x 或特性 y,等等。因此,當您聽說我們在 pdo 中根本不用為此而擔憂時可能會大吃一驚;我們不希望使所有內容都完全統一,因為要使得這種統一成為可能,只能是將自己限制在最低的通用標準。

如果 pdo 不是乙個整體的抽象層,那還有什麼別的原因值得您考慮使用它嗎?

·效能。pdo 從一開始就吸取了現有資料庫擴充套件成功和失敗的經驗教訓。因為 pdo 的**是全新的,所以我們有機會重新開始設計效能,以利用 php 5 的最新特性。

·能力。pdo 旨在將常見的資料庫功能作為基礎提供,同時提供對於 rdbms 獨特功能的方便訪問。

·簡單。pdo 旨在使您能夠輕鬆使用資料庫。api 不會強行介入您的**,同時會清楚地表明每個函式呼叫的過程。

·執行時可擴充套件。pdo 擴充套件是模組化的,使您能夠在執行時為您的資料庫後端載入驅動程式,而不必重新編譯或重新安裝整個 php 程式。例如,pdo_oci 擴充套件會替代 pdo 擴充套件實現 oracle 資料庫 api。還有一些用於 mysql、postgresql、odbc 和 firebird 的驅動程式,更多的驅動程式尚在開發。

在**可以獲得 pdo?

**:阿佛爾[www.afoer.com]

pdo 是通過 pecl(發音為「pee-kle」,歐洲語言風格),即 php 擴充套件庫提供的。如果您在執行 linux 計算機,請按照下面的說明進行設定;稍後是在 windows 上安裝的詳細資訊。

請注意,pdo 及其驅動程式當前處於「alpha」狀態;這就意味著我們會合理保證沒有重大缺陷,但是該程式包功能並不完善 - 我們還要新增很多功能。雖然我們鼓勵您測試該程式包,但是實在不推薦在現階段將其用於生產。

unix/linux 安裝

如果您以前尚未嘗試過 php 5,則請花一點時間來通讀一下「新聞」和各種宣告。在 unix 計算機上,您可能要安裝或公升級 libxml2;如果沒有 libxml2,「pear」程式包管理工具就無法執行,您安裝 pdo 時就會遇到很多困難。獲取 php 5,並將其編譯和安裝。確保指定的字首不是 /usr/local/,這樣它就不會與 php 4 安裝發生衝突了:

% ./configure --prefix=/usr/local/php5 --with-zlib [此處指定其他選項]

% make install

% pear install pdo-alpha

您需要告知 php 從專用於 php 5 的 php.ini 檔案載入 pdo 驅動程式。如果您使用的字首與我使用的一樣,php 則會在 /usr/local/php5/lib/php.ini 中查詢 php.ini 檔案。向該檔案中新增以下行:

extension=pdo.so

現在您需要獲取資料庫特定的驅動程式;對於 oracle,此特定程式稱為 pdo_oci。在 shell 中,鍵入:

% pear install pdo_oci-alpha

此驅動程式也需要從 php.ini 檔案載入;將下行新增到前面新增的那行之後:

extension=pdo_oci.so

現在檢查一下,確保它能夠執行:

% php -m

在模組列表中,您應該會看到 pdo 和 pdo_oci。

防火牆礙事了?

php資料庫抽象層 PDO

下面就來介紹一下資料庫抽象層pdo的使用 pdo php data objects 是乙個輕量級的php擴充套件,提供了乙個資料訪問抽象層。還要就是pdo只能在php5.0以上版本使用。下面來介紹一下pdo常用的預定義常量 pdo param bool integer 表示布林資料型別 pdo pa...

PDO 資料訪問抽象層

1.操作其它資料庫 1 造物件 dsn mysql dbname test3 host localhost 資料來源 兩個引數 資料庫驅動,鏈結資料庫 pdo new pdo dsn,root 123 資料來源,資料庫名,密碼 2 寫sql語句 1.sql select from productor...

PDO資料訪問抽象層

pdo兩大功能 一 事務功能 pdo的事務功能主要控制好幾條sql語句同時成功或者同時失敗 當其中一條sql語句有錯誤時,同時好幾條一起失敗 失敗時可以回滾操作 1 造物件 dsn mysql dbname crud host localhost pdo new pdo dsn,root 123 2...