在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 位址
......
利用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 位址
......
如何在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...