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,一经查实,立即删除!

相关文章

MySQL查询,按拼音首字母排序

MySQL按照汉字的拼音排序按照汉字的拼音排序,用的比较多是在人名的排序中,按照姓氏的拼音字母,从A到Z排序;如果存储姓名的字段采用的是GBK字符集,那就好办了,因为GBK内码编码时本身就采用了拼音排序的方法&…

Android Studio之debug调试卡在waiting for debugger界面的解决办法

1、问题 Android Studio debug调试项目卡在waiting for debugger界面2、解决办法 一开始从启adb服务adb stop-server adb start-server 发现没什么用,然后呢,估计是很多app再运行,然后我就重启了Android studio,问题就解决了如果要是万一还不…

.NET 深度指南:Colors

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

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

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

Android之用UncaughtExceptionHandler实现保存崩溃日志到sdcard目录下的文件夹

1、异常和UncaughtExceptionHandler的介绍 1)、Java异常处理机制中: 如果抛出的是Exception异常的话,需要有try catch进行处理,属于可以捕获exception。 如果抛出的是RuntimeException异常的话,发生异常之后将由JVM进行处理,属于不可捕获exception。 2)、Java 异常的分类…

http://www.appinn.com/bookmark-manager-chrome/

是有多手贱才装了这个。。弄得我的书签全都木有了。。我去。。终于回来了。。感觉太好了。。转载于:https://www.cnblogs.com/aniy/p/4547709.html

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…

php如何避免时间重复,如何避免/停止php和html的重复插入?

这是我写的一个小班(未经测试)class FormID {private $lastFormID "";private $newFormID "";function __construct(){$this->lastFormID $_SESSION[__frmid__];$_SESSION[__frmid__] uniqid(sm);$this->newFormID $_SESSION[__frmid__];}publi…

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…

linux之使用md5sum命令比较两个文件是否一样

1、md5sum命令介绍 md5sum命令用于生成和校验文件的md5值。它会逐位对文件的内容进行校验。是文件的内容,与文件名无关,也就是文件内容相同,其md5值相同2、比较文件 1)、生产文件的md5md5sum file1md5sum file2 会有结果显示2&am…

php 友盟推送角标,桌面角标设置以及消息推送服务

更新记录0.01(2020-05-09)1、添加角标设置2、添加清除角标3、添加品牌获取4、添加通知栏推送5、添加点击通知栏进入APP平台兼容性AndroidiOS原生插件通用使用流程:购买插件,选择该插件绑定的项目。在HBuilderX里找到项目,在manifest的app原生…

博客流量分析

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

hdu 4493 Tutor (水 精度)

题意&#xff1a; 思路&#xff1a; #include <iostream> #include <cstdio> #include <cstring> #include <algorithm>using namespace std; int fa[150]; int fin(int x) {return fa[x]x?x:fin(fa[x]); } void unionn(int x,int y) {int fxfin(x);i…

关于YoYo.Cms

YoYoCms 我是角落的白板笔&#xff0c;目前是一个专注于ABP框架的使用者和学习者。 在第一阶段我会将Zero中功能给实现出来&#xff0c;当然会对他进行一些改变&#xff0c;毕竟有些地方的实现不是那么适合国内的开发环境。 YoYoCms 会持续将一些通用的功能组件释放出来给大家使…

WPF 基础控件之CheckBox样式

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