PHP连接Oracle数据库

2010-09-25  |  23:10分类:代码细节  |  标签:  |  

一般大家不这么做。

不难,和连接MySQL差不多。php需要使用OCI8扩展来连接Oracle,可以使用phpinfo来查看你是否已经安装了该扩展。关于OCI8的详细使用可以直接参考php的Manual OCI8,本文仅做一个入门介绍。

1. 使用什么帐号连接
$ora_host = "172.19.*.259"; $ora_port="1521"; $ora_sid = "orasid"; $ora_username = "orauser"; $ora_password = "orapwd"; $charset = "UTF8"; ### zhs16gbk ###

2. 构建Easy Connect string

(如果tnsnames.ora中已经有了,可以直接使用Connect Name)

$ora_connstr = "(description=(address=(protocol=tcp) (host=".$ora_host.")(port=".$ora_port.")) (connect_data=(service_name=".ora_sid.")))";

关于具体的Connect String构造不同的Oracle版本略有不同,详细参考对应版本的Easy Connect Naming

3. 连接数据库

使用oci_connect函数就可以连接Oracle了(其实和连接MySQL大同小异)。

$conn = oci_connect($ora_username, $ora_password,$ora_connstr,$charset); if (!$conn) { $e = oci_error(); trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR); }
4. 执行Query
$stid = oci_parse($conn, 'SELECT * FROM employees'); oci_execute($stid);
5. 获取结果

在while循环中使用oci_fetch_array遍历结果。

echo "<table border='1'>\n"; while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) { echo "<tr>\n"; foreach ($row as $item) { echo " <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n"; } echo "</tr>\n"; } echo "</table>\n";
6. 全部代码
$ora_host = "172.19.*.259"; $ora_port="1521"; $ora_sid = "orasid"; $ora_username = "orauser"; $ora_password = "orapwd"; $charset = "UTF8"; ### zhs16gbk ### $ora_connstr = "(description=(address=(protocol=tcp) (host=".$ora_host.")(port=".$ora_port.")) (connect_data=(service_name=".ora_sid.")))"; $conn = oci_connect($ora_username, $ora_password,$ora_connstr); if (!$conn) { $e = oci_error(); trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR,$charset); } $stid = oci_parse($conn, 'SELECT * FROM employees'); oci_execute($stid); echo "<table border='1'>\n"; while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) { echo "<tr>\n"; foreach ($row as $item) { echo " <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n"; } echo "</tr>\n"; } echo "</table>\n";
参考文献:

1. Oracle OCI8

2. 参考了俊达的代码

喜欢本文,那就收藏到:

5条评论 关于 “PHP连接Oracle数据库”

  1. 自己配置的WAMP环境,扩展oracle函数库(oci) - php技术分享 发表于: 六月 25th, 2015 13:30

    […] 这里给一个实例连接 原文连接 http://www.orczhou.com/index.php/2010/09/php-oci8-oracle/ […]

  2. 自己配置的WAMP环境,扩展oracle函数库(oci) - 编程技术分享 发表于: 六月 25th, 2015 13:35

    […] 这里给一个实例连接 原文连接 http://www.orczhou.com/index.php/2010/09/php-oci8-oracle/ […]

  3. 自己配置的WAMP环境,扩展oracle函数库(oci) | 可维博客 发表于: 七月 7th, 2015 02:03

    […] 这里给一个实例连接 原文连接 http://www.orczhou.com/index.php/2010/09/php-oci8-oracle/ […]

  4. WAMP环境中扩展oracle函数库(oci) – php 脚本 发表于: 三月 22nd, 2016 21:33

    […] 这里给一个实例连接 原文连接 http://www.orczhou.com/index.php/2010/09/php-oci8-oracle/ […]

  5. 肖志林 发表于: 一月 10th, 2017 11:24

    可以,大哥。用框架怎么连接


发表您的评论