要从oracle数据库里用php查数据,关键在于配置连接环境、编写sql语句并处理结果。首先安装php 7.4以上版本,下载oracle instant client并设置环境变量path;其次启用oci8或pdo_oci扩展,linux用户用pecl install oci8并添加extension=oci8.so到php.ini,windows用户直接解压instant client;接着使用oci_connect()或pdo建立连接,确保用户名、密码和tns名称正确;然后通过oci_parse解析sql语句,oci_execute执行查询,oci_fetch_array获取结果;最后释放资源oci_free_statement并关闭连接oci_close,注意字段名默认大写,中文乱码需检查nls_lang和网页编码,报错ora-12154需检查tnsnames.ora配置。

想从Oracle数据库里用PHP查数据?其实不难,但步骤要清楚。关键在于配置好连接环境,写对SQL语句,并正确处理返回结果。

准备工作:安装和配置
在开始之前,得确保你的服务器支持PHP连接Oracle。主要需要以下几样东西:
PHP安装(建议7.4以上)Oracle Instant Client(基础包或SDK)开启PDO_OCI扩展或者oci8扩展
如果你用的是Linux系统,可以通过pecl安装oci8扩展:
立即学习“PHP免费学习笔记(深入)”;
pecl install oci8
然后在php.ini中加上:

extension=oci8.so
Windows用户则可以直接下载Oracle Instant Client的zip包,解压后设置环境变量PATH指向它。
建立数据库连接
连接Oracle最常用的方式有两种:使用原生oci_connect()函数,或者通过PDO方式。这里以oci8为例说明。
$conn = oci_connect('username', 'password', 'localhost/XE');if (!$conn) { $e = oci_error(); trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);}
其中:
username 是你的Oracle用户名password 是密码localhost/XE 是数据库的TNS名称,可以是远程地址也可以是本地
如果连接失败,记得检查tnsping是否能通,或者查看Oracle服务是否启动。
执行查询并获取结果
连接成功之后就可以执行查询了。比如你想查员工表里的前5条记录:
SELECT * FROM employees WHERE ROWNUM <= 5
对应PHP代码如下:
$stid = oci_parse($conn, 'SELECT * FROM employees WHERE ROWNUM <= 5');oci_execute($stid);while ($row = oci_fetch_array($stid, OCI_ASSOC + OCI_RETURN_NULLS)) { print_r($row);}
解释一下:
oci_parse 是把SQL语句解析成可执行的对象oci_execute 真正执行查询oci_fetch_array 每次取一行结果,OCI_ASSOC表示返回关联数组
你也可以只取特定字段,比如只想看名字和工资:
echo "
| " . $row['NAME'] . " | "; echo "" . $row['SALARY'] . " | "; echo "
注意字段名默认是大写的,所以别写错了。
关闭连接和常见问题
查询完成后记得释放资源和关闭连接:
oci_free_statement($stid);oci_close($conn);
有些常见问题要注意:
查询慢?可能是没有加WHERE条件或者索引没生效字段值中文乱码?检查NLS_LANG设置和网页编码是否一致报错“ORA-12154: TNS: could not resolve the connect identifier”?检查tnsnames.ora文件配置是否正确
基本上就这些。整个流程虽然有点繁琐,但只要环境配好、语法没错,查数据并不复杂。
以上就是如何使用PHP从Oracle数据库查询数据的详细教程?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1262842.html
微信扫一扫
支付宝扫一扫