如何在PHP中使用Oracle資料庫

2022-04-06 09:32:41 字數 4859 閱讀 1386

在php3.0以上版本中,php內建了幾乎目前所有的資料庫處理函式,包括oracle;在本文中我們通過乙個例項來介紹了如何使用這些函式來操作oracle資料庫。

php提供了2大類api(應用程式介面)來操作oracle資料庫。乙個是標準的oracle處理函式(ora) 另乙個是oracle 8呼叫介面函式(oci8). 後者只能在oracle 7或8版本上使用。 由於oci8 提供了很多優化選項,因此只要有可能就應該採用 oci8 介面。這裡我們分別用這二種函式集進行了演示。

首先本文的前提假設你已經裝好了 oracle資料庫環境 和 php 開發環境. 如果不懂也沒多大關係,網上有很多相關的好文章可以參考。

第一步:建立 乙個實驗用的資料庫

這個問題你可以請你的資料庫管理員或參考oracle使用者手冊處理,這裡不再多講

用 ora 建立資料表

即使你已經建立好了資料表,也請看看本段文字。它可以告訴你如何用php sql的技術操作oracle

在本例中我們建立了乙個用於存放個人email的資料表

相關php**:

putenv("oracle_sid=orasid");

$connection = ora_logon ("username", "password");

if ($connection == false)

$cursor = ora_open ($connection);

if ($cursor == false)

$query = "create table email_info " .

"(fullname varchar(255), email_address varchar(255))";

$result = ora_parse ($cursor, $query);

if ($result == false)

$result = ora_exec ($cursor);

if ($result == false)

ora_commit ($connection);

ora_close ($cursor);

ora_logoff ($connection);

?>

為了處理oracle資料庫,我們首先要和oracle建立乙個聯結。

語法是 ora_logon (user, password),返回乙個connectid..

提醒: 在此之前我們還必須設定環境變數: oracle_sid的值.

現在,我們可以通過該聯結的 id對oracle進行互動式操作了。資料表名字就叫email_info吧。該錶由2個域組成,乙個儲存個人全名,(如:曉月)乙個儲存email位址如([email protected])

還需要乙個游標 ora_open. 該游標常常用來列舉資料。我們用 ora_parse 或 ora_exec 查詢oracle的結果集. ora_parse 效驗sql語法正確性 而 ora_exec 則執行相應的sql語句. 如果這一切都正常執行,那麼我們就執行 ora_commit來確認.

create a table using oci

下面我們將建立乙個email個人資訊簿。這次採用oci8 api指令

相關php**:

putenv("oracle_sid=orasid");

$connection = ocilogon ("username", "password");

if ($connection == false)

$query = "create table email_info " .

"(fullname varchar(255), email_address varchar(255))";

$cursor = ociparse ($connection, $query);

if ($cursor == false)

$result = ociexecute ($cursor);

if ($result == false)

ocicommit ($connection);

ocilogoff ($connection);

?>

我們可以看到這2段**語法幾乎都一樣,區別僅僅函式名字不同; 其次,在oci8中我們不需要專門執行開啟游標的指令,在呼叫 ociparse 系統就自動返回了乙個游標id.

利用 ora 向資料表 'email_info' 輸入資料

當使用者瀏覽這段指令碼時,顯示乙個由姓名、email輸入域組成的表單;當使用者添好資料點選提交時,指令碼程式將把這姓名、email儲存到'email_info'資料表中。

相關php**:

if ($submit == "click")

$cursor = ora_open ($connection);

if ($cursor == false)

$query = "insert into email_info values ('$fullname', '$email')";

$result = ora_parse ($cursor, $query);

if ($result == false)

$result = ora_exec ($cursor);

if ($result == false)

ora_commit ($connection);

ora_close ($cursor);

ora_logoff ($connection);

}else

?>

對了,這段指令碼必須存為insert.php,因為在呼叫的頁面中指定insert.php為表單處理程式

瀏覽效果:  

利用oci向資料表 'email_info' 輸入資料

同上,只不過用oci來寫

相關php**:

if ($submit == "click")

$query = "insert into email_info values ('$fullname', '$email')";

$cursor = ociparse ($connection, $query);

if ($cursor == false)

$result = ociexecute ($cursor);

if ($result == false)

ocicommit ($connection);

ocilogoff ($connection);

}else

?>

對了,這段指令碼必須存為insert.php,因為在呼叫的頁面中指定insert.php為表單處理程式

瀏覽效果:  

利用ora列出全部資料表'email_info'中的資料

下面,我們將逐條讀出資料庫的內容,並以html**形式顯示'email_info'資料表中的資料

相關php**:

putenv("oracle_sid=orasid");

$connection = ora_logon ("username","password");

if ($connection == false)

$cursor = ora_open ($connection);

if ($cursor == false)

$query = "select * from email_info";

$result = ora_parse ($cursor, $query);

if ($result == false)

$result = ora_exec ($cursor);

if ($result == false)

echo " ";

echo " ";

while (ora_fetch_into ($cursor, &$values))

echo "

full name

email address

$name

$email ";

ora_close ($cursor);

ora_logoff ($connection);

?>

程式執行的瀏覽效果如下所示:

姓名

email 位址

春花[email protected]

秋月[email protected]

......

利用oci列出全部資料表'email_info'中的資料

同上,只不過用oci來寫

相關php**:

putenv("oracle_sid=orasid");

$connection = ocilogon ("username","password");

if ($connection == false)

$query = "select * from email_info";

$cursor = ociparse ($connection, $query);

if ($cursor == false)

$result = ociexecute ($cursor);

if ($result == false)

echo " ";

echo " ";

while (ocifetchinto ($cursor, $values))

echo "

full name

email address

$name

$email ";

ocilogoff ($connection);

?>

程式執行的瀏覽效果如下所示:

姓名

email 位址

春花[email protected]

秋月[email protected]

......

如何在Oracle中使用Sequence

sql server可以自增字段,但是oracle中在建表的時候可沒有這個選項,但是可以通過觸發器 trigger 或者序列 sequence 來實現,本文主要講述sequence。二者的區別oracle中自增字段的兩種方法的比較 trigger和sequence 建立sequence的語法很簡單,...

如何在Oracle中使用Sequence

sql server可以自增字段,但是oracle中在建表的時候可沒有這個選項,但是可以通過觸發器 trigger 或者序列 sequence 來實現,本文主要講述sequence。二者的區別oracle中自增字段的兩種方法的比較 trigger和sequence 在oracle中,沒有象ms sq...

如何在PHP中使用Oracle資料庫 4

利用oci向資料表 email info 輸入資料 同上,只不過用oci來寫 相關php 做為現在的主流開發語言 if submit click query insert into email info values fullname,email cursor ociparse connection...