PHP连接Oracle数据库及查询数据的方法
本文详细介绍如何使用PHP的OCI8扩展成功连接Oracle数据库并提取数据。涵盖环境配置、连接字符串规范、完整的代码实例以及基本的异常处理与资源释放步骤。
准备条件:开启OCI8扩展
PHP需加载OCI8扩展以支持Oracle连接。确保服务器已安装Oracle客户端库。
- 编辑
php.ini文件,取消注释extension=oci8.so(Linux) 或extension=php_oci8.dll(Windows)。 - 重启Web服务器(如Apache或Nginx)使配置生效。
- 通过
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数据库的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









