php怎么关闭oracle连接,PHP 连接 Oracle

起因

由于项目的数据库需要用客户购买的Oracle数据库,所以需要php安装oci扩展。

运行环境

php : 7.2

系统: windows10

oracle: 11gR2

安装相关环境

由于php的oci8扩展还是需要使用到oracle的一些包,所以先下载这一些。

1d72a9cc2058d725efd6b2eec5321899.png

下载完成后解压缩这个压缩包,并且将这个包的路径添加到PATH中。

bbc9cd8fd23920aac4c529a584d296e2.png

下载php的oci8扩展

windows可以直接到这个网址上下载相应的dll,pecl oci8

如果是安装了pecl的话,可以直接运行 pecl install oci8

下载完成后放到php的ext目录下,并且编辑php.ini文件,添加extension=php_oci8.dll

这样就完成了php与oracle的配置了。

在Laravel中使用

Laravel默认支持的数据库不包含oracle,可以使用 yajra/laravel-oci8这一个包来让Laravel支持oracle

composer require yajra/laravel-oci8

由于这个包已经支持Laravel的自动加载,也就不需要自己手动去注册了

"extra": {

"branch-alias": {

"dev-master": "5.6-dev"

},

"laravel": {

"providers": [

"Yajra\\Oci8\\Oci8ServiceProvider"

]

}

},

这样就可以使用php连接到oracle了。

一个坑

我们在使用migration来管理表格的时候,一般情况下会对每一个表都要有注释(为了别人能看得懂。。。)。然而这个包有一个bug,就是对于表格的注释缺少了前缀。

表格的注释是成员变量而不是方法噢。

/**

* Run the comment on table statement.

* Comment set by $table->comment = 'comment';.

*

* @param \Yajra\Oci8\Schema\OracleBlueprint $blueprint

*/

private function commentTable(OracleBlueprint $blueprint)

{

$table = $this->wrapValue($blueprint->getTable());

if ($blueprint->comment != null) {

$this->connection->statement("comment on table {$table} is '{$blueprint->comment}'");

}

}

这一段代码在/vendor/yajar/laravel-oci8/src/Oci8/Schema/Comment.php 中第40行。

这里少了对表前缀的引用,导致我们在migrate的时候生成的sql是缺少了表前缀的,所以在这里添加一个表前缀上去解决这个问题

/**

* Run the comment on table statement.

* Comment set by $table->comment = 'comment';.

*

* @param \Yajra\Oci8\Schema\OracleBlueprint $blueprint

*/

private function commentTable(OracleBlueprint $blueprint)

{

$table = $this->wrapValue($blueprint->getTable());

if ($blueprint->comment != null) {

$this->connection->statement("comment on table {$this->connection->getTablePrefix()}{$table} is '{$blueprint->comment}'");

}

}

本作品采用《CC 协议》,转载必须注明作者和本文链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/291171.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET 深度指南:Colors

作者 | Peter Huber译者 | 王强策划 | 丁晓昀我不知道你们是什么情况,但我自己在过去多年中都因为.NET 色彩(Colors)类中可用的色彩数量有限而头痛不已,为此我试图用 ColorPickers 获得匹配的色…

php 怎么打出来的,word书名号怎么打出来

书名号怎么打出来?书名号相信大家都不会陌生了,正常情况下,我们会将书名、歌曲名、作品名等用书名号框起来,这样就可以让读者一目了然。然而很多用户在编辑Word和Excel文档时,想输入书名号却不知从何下手,这…

springMVC带文件的表单数据无法绑定到参数中

2019独角兽企业重金招聘Python工程师标准>>> 在一个带enctype"multipart/form-data"属性的表单提交时发现,该表单中包含的其他input无法设置到对应方法参数中。 如下: JSP:带enctype"multipart/form-data"属性…

关于Retinex图像增强算法的一些新学习。

最近再次看了一下IPOL网站,有一篇最近发表的文章,名字就是Multiscale Retinex,感觉自己对这个已经基本了解了,但还是进去看了看,也有一些收获,于是抽空把他们稍微整理了下,原始文章及其配套代码…

如何判断 .NET Core 应用程序是以管理员身份运行

有时候,我们需要知道当前程序是否以管理员身份运行,以便执行一些需要特殊权限的操作。在github(https://github.com/dotnet/runtime/issues/25118#issuecomment-367407469)上找到了一个解决方案://需要引用nuget包Mono.Posix.NETStandard pub…

Android之Content和activity、service、Application关系和attachBaseContext函数调用的时候

1、Content和activity、service、Application关系 2、Application里面attachBaseContext和onCreate函数调用顺序 Application-> attachBaseContext ();ContentProvider:onCreate()Application:onCreate()人还是容易忘记,先记录下来。

批量创建域账号

创建5列的csv文档(注意文件编码) 执行如下脚本 for /f "tokens1,2,3,4,5 delims," %a in (c:\test.csv) do dsadd user "cn%c,oumk,ouicgroup,dcicdomain,dccom" -samid %d -upn %dicdomain.com -ln %a -fn %b -pwd %e -disabled no…

如何快速编写并运行Tiny模板语言?

2019独角兽企业重金招聘Python工程师标准>>> 说到模板开发,当然就离不开要调试,要运行。 由于一般情况下模板语言都是由Java程序驱动跑的,因此,每次都需要搞一个Java类来驱动它,才能运行出结果。这个对于悠…

Windows 11 上大招!正式支持安卓!

面向 Windows 11 正式版用户,微软现已发布累积更新 KB5010414,更新后版本号升级至 Build 22000.527。KB5010414 是一个可选更新,因此除非您主动点击“获取更新”按钮,否则它不会下载或安装。该更新将于 2022 年 3 月向所有 Window…

博客流量分析

接连两篇Spark内核分析的文章都被推荐到CSDN首页,带来的流量还是很客观的,基本上一天最少500个独立IP的访问。这个访问量还是很客观的,比推荐到博客首页和侧边栏还是效果好处不少的。88%的流量来自首页。北京不愧是码农的聚集地啊&#xff0c…

WPF 基础控件之CheckBox样式

WPF开发者QQ群:340500857由于微信群人数太多入群请添加小编微信号yanjinhuawechat 或 W_Feng_aiQ 邀请入群需备注WPF开发者 PS:有更好的方式欢迎推荐。支持NugetInstall-Package WPFDevelopers.Minimal -Version 3.0.001—代码如下一、创建 Styles.Check…

Theano3.2-练习之数据集及目标函数介绍

来自http://deeplearning.net/tutorial/gettingstarted.html#gettingstarted 一、下载 在后续的每个学习算法上,都需要下载对应的文档,如果想要一次全部下好,那么可以复制git上面的这个教程的资料: git clone git://github.com/li…

C#使用NPOI导出Excel文件

欢迎您成为我的读者,希望这篇文章能给你一些帮助。前言今天咱们一起来看看在C#中如何使用NPOI第三方控件进行数据的导出。关于NPOI插件网上资料很多,大家感兴趣的可以去看看。本文使用的版本是NPOI 2.5.1。大家可在包管理器NuGet或者下面网址进行下载。h…

Android之ActivityLifecycleCallbacks的得到当前的activity的状态

1、ActivityLifecycleCallbacks的介绍 Application通过此接口提供了一套回调方法,用于让开发者对Activity的生命周期事件进行集中处理,注意是在Application里面,路径如下 android.app.Application.ActivityLifecycleCallbacks要求API 14+ (Android 4.0+) ActivityLifecyc…

开放产品开发(OPD):Archi 汉化工具下载

在OPD中,我们使用了ArchiMate 作为架构语言,这是一个高层、简单的描述语言,之前我也写过一系列相关的文字,架构语言ArchiMate - 开篇:企业架构语言ArchiMate介绍架构语言ArchiMate - 语言结构&a…

【数据库中间件】MyCat分表分库规则实现

2019独角兽企业重金招聘Python工程师标准>>> /*** * 先根据截取字段的日期分组,再根据字段值数据按天入表 * author Fx_demon * */ public class PartitionBySubstringRangeDateDay extends AbstractPartitionAlgorithm implements RuleAlgo…

[C# 项目实战]: 制作一个备忘录(经典)

01—概述前几天群里有人问如何制作备忘录,感觉这样一个小实例挺适合新手们入门学习使用,所以就抽空做了出来。界面如下图:这个备忘录主要包括了如下功能:① 备忘录信息的增、删、改、查;② 备忘录时间到了以后进行语音…

RedHat 5.4下构建postfix全功能电子邮(七)-extmail extman平台-(下集)

2019独角兽企业重金招聘Python工程师标准>>> RedHat 5.4下构建postfix全功能电子邮(七)-extmail extman平台-(下集) 三、设置邮件系统的图形化日志信息 [rootmail ~]# ln -sf /usr/local/apache2/htdocs/extman/addon…

JNI中的内存管理(转)

源:JNI中的内存管理 JNI 编程简介 JNI,Java Native Interface,是 native code 的编程接口。JNI 使 Java 代码程序可以与 native code 交互——在 Java 程序中调用 native code;在 native code 中嵌入 Java 虚拟机调用 Java 的代码…

C# 异步方法的异常处理

在使用异步方法时,应该知道错误的一些特殊处理方式。所有 ErrorHandling 示例的代码都使用了如下名称空间:SystemSystem.Threading.Tasks从一个简单的方法开始,它在延迟后抛出一个异常:static async Task ThrowAfter(int ms, stri…