[PHP] 透過OCI8連到Oracle之範例說明

之前有發表([PHP] PHP for Oracle教學),但還是會看不太懂,我補充一些比較基本的資訊,並用範例來解釋:

如何確認環境設定是否支援

  1. 建立一個網頁,例如phpinfo.php,source code如下:
    <?php echo phpinfo(); ?>
  2. 瀏覽器開啟phpinfo.php,搜尋『oci』。
  3. 若找到oci8代表環境支援。

啟用方式

之前範例的OS是windows+xampp,若是Ubuntu,安裝步驟如下:

安裝Oracle Instant Client 和 SDK

STEP 1

依Server的OS下載 Oracle Instant Client 和 SDK 。下載點: Oracle官網

STEP 2

建立資料夾

mkdir /opt/oracle

將剛剛下載的壓縮檔(zip)複製至此資料夾

STEP 3

解壓縮此檔

cd /opt/oracle
unzip instantclient-basic-linux-12.1.0.2.0.zip
unzip instantclient-sdk-linux-12.1.0.2.0.zip

STEP 4

建立symlink

ln -s /opt/oracle/instantclient_12_1/libclntsh.so.12.1 /opt/oracle/instantclient_12_1/libclntsh.so
ln -s /opt/oracle/instantclient_12_1/libocci.so.12.1 /opt/oracle/instantclient_12_1/libocci.so

STEP 5

將資料夾增加到主機的 ldconfig.

echo /opt/oracle/instantclient_12_1 > /etc/ld.so.conf.d/oracle-instantclient

STEP 6

更新Dynamic Linker Run-Time Bindings

ldconfig

安裝額外的Packages

STEP 1

安裝下述packages

apt-get install php-pear php5-dev build-essential libaio1

STEP 2

下載並安裝OCI8

pecl install oci8-2.0.10

當安裝提示需輸入 Client location時, 輸入下述:

instantclient,/opt/oracle/instantclient_12_1

STEP 3

設定PHP load OCI8模組

echo "extension = oci8.so" >> /etc/php5/fpm/php.ini
echo "extension = oci8.so" >> /etc/php5/cli/php.ini

STEP 4

Restart PHP 和 nginx

service php5-fpm restart
service nginx restart

可以測試Oracle連線。

程式範例

PHP範例說明(這裏的OCI函數需在PHP5以上,PECL OCI8 至少1.1.0版本):

<?php

$oracleuser="user";  //連線到oracle的帳號

$oraclepw="password";  //連線到oracle的密碼

$oraclelink="(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL=TCP)(HOST = abc.test.com.tw)(PORT = 1521)))(CONNECT_DATA = (SID = sid)))";  //Oracle主機的連線設定

$oracleconn = oci_pconnect($oracleuser, $oraclepw, $oracledata,"utf8");  //連線到Oracle,在此設定語系:utf8

if (!$oracleconn) {

$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);

}  //若連線失敗,顯示錯誤訊息(可以不用加入這段IF)

$query = "select id, name, address, tel from emp_info";  //搜尋資料的query

$statement = oci_parse($oracleconn, $query);  //預備執行query的statement 設定

oci_execute($statement);  //執行statement

while ($row = oci_fetch_row($statement)) {

echo $row[0]."-"."$row[1]"."-"."$row[2]"."-"."$row[3]"."
";

}

unset($row);  //清除array

oci_free_statement($statement);  //清除statement

oci_close($oracleconn);  //關閉Oracel連線(很重要,不然會一直佔用Session)

?>

產生結果如下:

1-王小明-台北市某某路某某號4樓-(02)2345-6789

2-李小華-台北市某某某路某號2樓-(02)2987-6543

3-陳小文-新北市某某路某某號6樓-(02)2357-2468

參考資料:
How to install OCI8 on Ubuntu 14.04 and PHP 5.6

對「[PHP] 透過OCI8連到Oracle之範例說明」的一則回應

Add yours

發表留言

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

在WordPress.com寫網誌.

向上 ↑