博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php 扩展之oci8在ThinkPHP上的应用
阅读量:6572 次
发布时间:2019-06-24

本文共 1624 字,大约阅读时间需要 5 分钟。

最近突然想到了oci_8的拓展,PHP的一个拓展,有很多函数,翻了翻手册,看了看ThinkPHP的DB以及DBOracle的驱动文件

这才想明白其中的oci_connect和oci_pconnect以及oci_new_connect的来源

代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
     
* 连接数据库方法
     
* @access public
     
*/
    
public 
function 
connect(
$config
=
''
,
$linkNum
=0) {
        
if 
( !isset(
$this
->linkID[
$linkNum
]) ) {
            
if
(
empty
(
$config
))  
$config 
$this
->config;
            
$pconnect   
= !
empty
(
$config
[
'params'
][
'persist'
])? 
$config
[
'params'
][
'persist'
]:
$this
->pconnect;
            
$conn 
$pconnect 
'oci_pconnect'
:
'oci_new_connect'
;
            
$this
->linkID[
$linkNum
] = 
$conn
(
$config
[
'username'
], 
$config
[
'password'
],
$config
[
'database'
],C(
'DB_CHARSET'
));
//modify by wyfeng at 2008.12.19
            
if 
(!
$this
->linkID[
$linkNum
]){
                
$this
->error(false);
            
}
            
//这里的有两个函数oci_pconnect和oci_new_connect是oci8拓展里的,oci_connect也是
            
//例如:$conn = oci_connect('system','oracle','192.168.109.132:49161/xe');
            
//192.168.109.132:49161/xe--->这种字符串连接是简单连接,需要在oracle10g以上才能使用
            
//完整 Oracle Net 连接字符串提供了足够的连接灵活性。
                
//$db = MYDB2 = (DESCRIPTION =
                
//(ADDRESS = (PROTOCOL = TCP)
                
//(HOST = mymachine.mydomain)(PORT = 1521))
                
//(CONNECT_DATA=
                
//(SERVER = DEDICATED)
                
//(SERVICE_NAME = MYDB.AU.ORACLE.COM)))';
            
//oci8 扩展始终需要查找 Oracle 库和消息文件。找不到正确的文件将导致 PHP 返回 Oracle“ORA-12705:Cannot access NLS data files or invalid environment specified”。
            
// 标记连接成功
            
$this
->connected = true;
            
//注销数据库安全信息
            
if
(1 != C(
'DB_DEPLOY_TYPE'
)) unset(
$this
->config);
        
}
        
return 
$this
->linkID[
$linkNum
];
    
}

不是造轮子,而是去理解别人是如何来组织原生的写法,我觉得ThinkPHP的一些处理还是不错的。

最近开始觉得oci_8的函数可以看着手册来试一下。有新的感触会写在这里

本文转自 jackdongting 51CTO博客,原文链接:http://blog.51cto.com/10725691/1953081

转载地址:http://vnmjo.baihongyu.com/

你可能感兴趣的文章
IEnumerable中运用yield
查看>>
python 时间转换(day,hous,minute,second)
查看>>
网络布线线材用量计算公式
查看>>
查询当前数据库用户会话信息
查看>>
创建触发器的基本语法
查看>>
2015.1.15 利用Oracle函数返回表结果 重大技术进步!
查看>>
2015.3.2 VC++6制作非MFC dll以及VS2005、VS2010调用
查看>>
转:模态对话框的支持 (IE,Firefox,Chrome)
查看>>
让您的电脑在任意目录可以支持图片的粘贴,试试看呗~
查看>>
Jenkins+QTP自动化测试框架
查看>>
文件下载
查看>>
《Node.js In Action》笔记之流程控制
查看>>
C++类和对象
查看>>
3518EV200 SDK学习1
查看>>
JavaScript初学者应注意的七个细节
查看>>
1163: 零起点学算法70——Yes,I can!
查看>>
zookeeper原理及作用
查看>>
[ZJOI2015]诸神眷顾的幻想乡
查看>>
oracle之 ORA-12557: TNS: 协议适配器不可加载
查看>>
2018-2019-2 网络对抗技术 20165318 Exp1 PC平台逆向破解
查看>>