ThinkPHP连接ORACLE数据库的详细教程

2024-03-01 0 317
目录
  • 概念
  • 基本步骤
  • 详细操作
  • 问题排除

概念

  • 要连接Oracle数据库,必须有两个东西,一个PHP官方写的扩展,一个Oracle官方写的客户端
  • PHP是通过扩展去操作oralce客户端连接的服务端数据库,所以两个都不能少,而且版本必须一致
  • PHP官方写的Oracle扩展:oci8,有很多版本,还有32位和64位,每个版本官网有写对于的oracle版本
  • Ocracle官方写的客户端:Instant Client,也分为32位和64位,需要根据PHP匹配,下面会讲

基本步骤

  • 下载并配置oci8扩展
  • 下载并配置oracle客户端
  • 配置thinkphp

详细操作

下载并配置oci8扩展

  • 下载地址:http://pecl.php.net/package/oci8

ThinkPHP连接ORACLE数据库的详细教程

  • 如何选择版本:
  • 打开phpstudy环境,打开首页phpinfo.php,查看PHP版本

ThinkPHP连接ORACLE数据库的详细教程

  • 这里7.0.12选择32位的oci8扩展+32位的Instant Client
  • 下载对于版本

ThinkPHP连接ORACLE数据库的详细教程

  • 7.3以上的PHP要选择2.2.0以上版本,这里选择7.0对于的版本,因为使用的phpstudy2016,使用的PHP版本是php-7.0.12-nts
  • 注意对应版本的位数,32和64不能兼容
  • 解压后把这些全部拷贝到PHP的ext目录下D:\\phpStudy\\php\\php-7.0.12-nts\\ext

ThinkPHP连接ORACLE数据库的详细教程

  • 打开php.ini,找到extension所在,填写以下内容

extension=php_pdo_oci.dll
extension=php_oci8.dll
;;extension=php_oci8_11g.dll
extension=php_oci8_12c.dll

  • 说明:
  • php_pdo_oci.dll:这个是phpstudy自带的,使用pdo方法去连接oci8,这个必须打开
  • php_oci8.dll:这个是拷贝进入的oci8基本扩展,必须打开
  • php_oci8_11g.dll / php_oci8_12c.dll:这个是扩展版本,实测任意打开一个,都可以连接oracle 11g和oracle 19c,后面一个感觉速度更快
  • 重启phpstudy
  • 出现oci8扩展,说明安装成功

ThinkPHP连接ORACLE数据库的详细教程

  • 新安装的Oracle Run-time Client Library Version可能出现0.0.0.0,等配置Instant Client后再刷新会出现版本信息
  • 下载并配置oracle客户端
  • 下载地址:https://www.oracle.com/database/technologies/instant-client/downloads.html

ThinkPHP连接ORACLE数据库的详细教程

  • 这里也有版本选择,不管phpinfo是32还是64,这里都下载32位,实测32位可以匹配64和32的PHP(phpstudy_pro中PHP7.3.4版本测试)
  • 下载需登录,注册一个账号即可
  • 这里选择phpinfo中提示的instantclient_12_1

ThinkPHP连接ORACLE数据库的详细教程

ThinkPHP连接ORACLE数据库的详细教程

  • 解压到任意没有中文路径的地方,如D:/instantclient_12_1
  • 配置环境变量,这个和JAVA类似,就是可以在任何地方执行instantclient_12_1中功能

ThinkPHP连接ORACLE数据库的详细教程

  • 这个必须要配置,最终连接Oracle数据库的是instant client客户端,这个和oracle不匹配直接导致无法连接,实测32位可以匹配PHP64或者32(instant client版本还和oracle服务端版本有关,32位不行就换一个试试)
  • 配置thinkphp
  • common->config中配置

<?php
return array(
//连接oracle 11g r2
\’DB_TYPE\’ => \’oracle\’, // 数据库类型
\’DB_HOST\’ => \’127.0.0.1\’, // 服务器地址
\’DB_NAME\’ => \’orcl\’, // 数据库名
\’DB_USER\’ => \’usr\’, // 用户名
\’DB_PWD\’ => \’pwd\’, // 密码
\’DB_PORT\’ => \’1521\’, // 端口

//连接oracle 19c CBD模式
// \’DB_TYPE\’ => \’oracle\’, // 数据库类型
// \’DB_HOST\’ => \’127.0.0.1\’, // 服务器地址
// \’DB_NAME\’ => \’orcl\’, // 数据库名
// \’DB_USER\’ => \’C##usr\’, // 用户名
// \’DB_PWD\’ => \’pwd\’, // 密码
// \’DB_PORT\’ => \’1521\’, // 端口
);

  • 书写测试连接方法

<?php
namespace Home\\Controller;
use Think\\Controller;
class IndexController extends Controller {
public function index(){
$sql = \” select * from tablea where rownum <10 \”;
$rs = M()->query($sql);
var_dump($rs);
}
}

  • 经实测,11G和19C都可以连接

问题排除

oci_connect(): OCIEnvNlsCreate() failed. There is something wrong with your system – please check that PATH includes the directory with Oracle Instant Client libraries

  • 解决方案:Instant Client没有配置在环境变量中,配置一下即可

SQLSTATE[HY000]: OCIEnvNlsCreate: Check the character set is valid and that PHP has access to Oracle libraries and NLS data (ext\\pdo_oci\\oci_driver.c:688)

  • 解决方案:Instant Client版本不匹配,如果是64位的,换成32位的试一试

以上就是ThinkPHP连接ORACLE数据库的详细教程的详细内容,更多关于ThinkPHP连接ORACLE的资料请关注悠久资源网其它相关文章!

您可能感兴趣的文章:

  • ThinkPHP连接Oracle数据库
  • thinkphp中连接oracle时封装方法无法用的解决办法
  • ThinkPHP 连接Oracle数据库的详细教程[全]
  • PHP远程连接oracle数据库操作实现方法图文详解
  • PHP+Oracle本地开发环境搭建方法详解

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 PHP ThinkPHP连接ORACLE数据库的详细教程 https://www.u-9.cn/biancheng/php/182064.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务