PHP连接Oracle数据库及查询数据的方法

Ruby
Ruby
发布时间:2026-10-14 | 2人浏览过
原创

本文详细介绍如何使用PHP的OCI8扩展成功连接Oracle数据库并提取数据。涵盖环境配置、连接字符串规范、完整的代码实例以及基本的异常处理与资源释放步骤。

准备条件:开启OCI8扩展

PHP需加载OCI8扩展以支持Oracle连接。确保服务器已安装Oracle客户端库。

  1. 编辑 php.ini 文件,取消注释 extension=oci8.so (Linux) 或 extension=php_oci8.dll (Windows)。
  2. 重启Web服务器(如Apache或Nginx)使配置生效。
  3. 通过 phpinfo() 检查输出中是否包含OCI8模块信息。

核心操作:建立连接与查询

第1步:构建连接参数

使用 oci_connect($username, $password, $connection_string) 函数。
注意:生产环境建议将账号密码存放在安全配置文件中,不要硬编码在脚本里。

第2步:编写完整查询流程

以下是一个标准的PHP查询Oracle表数据的代码模板:

<?php
// 定义连接凭证与DSN
$username = 'hr';
$password = 'your_password';
// 方式A: TNS名称 | 方式B: IP/Port/SID | 方式C: 简易连接字符串
$dsn = '(DEscriptION=(ADDRESS=(PROTOCOL =TCP)(HOST=192.168.1.100)(PORT = 1521))(CONNECT_DATA =(SID=test)))';

$conn = @oci_connect($username, $password, $dsn);
if (!$conn) {
    $e = oci_error();
    exit('连接失败: ' . htmlentities($e['message']));
}

// 编写SQL语句
$query = 'SELECT * FROM DEPARTMENTS LIMIT 10'; // Oracle旧版可能不支持LIMIT
$stid = oci_parse($conn, $query);
if (!$stid) {
    $e = oci_error($conn);
    exit('SQL解析失败: ' . htmlentities($e['message']));
}

// 执行SQL
$r = oci_execute($stid, OCI_DEFAULT);
if (!$r) {
    $e = oci_error($stid);
    exit('执行失败: ' . htmlentities($e['message']));
}

// 输出结果表格
print '<table border="1">';
while($row = oci_fetch_array($stid, OCI_RETURN_NULLS)) {
    print '<tr>';
    foreach($row as $item) {
        print '<td>'.(isset($item) ? htmlentities($item) : ' ').'</td>';
    }
    print '</tr>';
}
print '</table>';

// 关闭连接
oci_close($conn);
?>

关键参数说明与排错

  • $connection_string: 常见格式有三种:
    1. TNS别名;
    2. IP地址/服务名 (如 host/service_name);
    3. EZConnect串 (如 host:port/service_name)。
  • OCI_DEFAULT: 传递此标志给 oci_execute 可防止自动提交事务,适用于只读查询。
  • OCI_RETURN_NULLS: 强制 oci_fetch_array 返回 null 值而非空字符串。
  • 错误捕获: oci_error() 若不带参数则返回最后发生的连接错误,带资源句柄(如 $conn)时则返回该资源的特定错误。

以上就是PHP连接Oracle数据库及查询数据的详细内容,更多关于PHP开发Oracle数据库的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表