位置: 编程技术 - 正文

PHP:oci_connect()的用法_Oracle函数(php odbc)

编辑:rootadmin
oci_connect

推荐整理分享PHP:oci_connect()的用法_Oracle函数(php odbc),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php odbc,php occ,php oci,php connect,php opache,php oci,php occ,php oci8,内容如对您有帮助,希望把文章链接给更多的朋友!

(PHP 5, PECL OCI8 >= 1.1.0)

oci_connect — 建立一个到 Oracle 服务器的连接

说明 resource oci_connect ( string $username , string $password [, string $db [, string $charset [, int $session_mode ]]] )

oci_connect() 返回一个大多数 OCI 调用都需要的连接标识符。可选的第三个参数可以包含想要连接的本地 Oracle 的实例的或者在 tnsnames.ora 中的条目的名字。如果没有指定可选的第三个参数,PHP 使用环境变量 ORACLE_SID(Oracle 实例)或 TWO_TASK(tnsnames.ora)来确定连接哪一个数据库。

session_mode 参数自版本 1.1 起可用并接受如下值:OCI_DEFAULT,OCI_SYSOPER 和 OCI_SYSDBA。如果指定了 OCI_SYSOPER 或 OCI_SYSDBA 其中之一,oci_connect() 将尝试使用外部认证信息建立特权连接。特权连接默认被禁止。要启用,需要将 oci8.privileged_connect 设为 On。

Note: 对 oci_connect() 用同样的参数第二次及之后的调用将返回第一次调用所返回的连接句柄。也就是说对一个句柄发出的查询也适用于另一个句柄,因为它们是同一个句柄。此行为演示于下面的例 1。如果需要两个句柄在事务上互相隔离开,应该使用 oci_new_connect() 来替代。

使用 Oracle客户端库来确定字符集。字符集不需要与数据库的字符集相匹配。如果不匹配,Oracle会尽可能地将数据从数据库字符集进行转换。因为依赖于字符集,可能不能给出可用的结果。转换也增加一些时间开销。

如果不指定,Oracle 客户端用 NLS_LANG 环境变量来决定字符集。

传递此参数可减少连接时间。

Example #1 oci_connect() 例子

<?phpecho"<pre>";$db="";$c1=oci_connect("scott","tiger",$db);$c2=oci_connect("scott","tiger",$db);functioncreate_table($conn){$stmt=oci_parse($conn,"createtablescott.hallo(testvarchar2())");oci_execute($stmt);echo$conn."createdtablenn";}functiondrop_table($conn){$stmt=oci_parse($conn,"droptablescott.hallo");oci_execute($stmt);echo$conn."droppedtablenn";}functioninsert_data($conn){$stmt=oci_parse($conn,"insertintoscott.hallovalues('$conn'||''||to_char(sysdate,'DD-MON-YYHH:MI:SS'))");oci_execute($stmt,OCI_DEFAULT);echo$conn."insertedhallonn";}functiondelete_data($conn){$stmt=oci_parse($conn,"deletefromscott.hallo");oci_execute($stmt,OCI_DEFAULT);echo$conn."deletedhallonn";}functioncommit($conn){oci_commit($conn);echo$conn."committednn";}functionrollback($conn){oci_rollback($conn);echo$conn."rollbacknn";}functionselect_data($conn){$stmt=oci_parse($conn,"select*fromscott.hallo");oci_execute($stmt,OCI_DEFAULT);echo$conn."----selectingnn";while(oci_fetch($stmt)){echo$conn."[".oci_result($stmt,"TEST")."]nn";}echo$conn."----donenn";}create_table($c1);insert_data($c1);//Insertarowusingc1insert_data($c2);//Insertarowusingc2select_data($c1);//Resultsofbothinsertsarereturnedselect_data($c2);rollback($c1);//Rollbackusingc1select_data($c1);//Bothinsertshavebeenrolledbackselect_data($c2);insert_data($c2);//Insertarowusingc2commit($c2);//Commitusingc2select_data($c1);//Resultofc2insertisreturneddelete_data($c1);//Deleteallrowsintableusingc1select_data($c1);//Norowsreturnedselect_data($c2);//Norowsreturnedcommit($c1);//Commitusingc1select_data($c1);//Norowsreturnedselect_data($c2);//Norowsreturneddrop_table($c1);echo"</pre>";?>

oci_connect() 如果出错则返回 FALSE。

Note:

在 PHP 5.0.0 之前的版本必须使用 ocilogon() 替代本函数。该函数名仍然可用,为向下兼容作为 oci_connect() 的别名。不过其已被废弃,不推荐使用。

参见 oci_pconnect(),oci_new_connect() 和 oci_close()。

参数

username

The Oracle user name.

password

The password for username.

connection_string

包含要连接的Oracle 实例。可以是 »Easy Connect 串,或是tnsnames.ora 文件中的连接名,或是本地 Oracle 实例名。

如果不指定,PHP 使用环境变量来确定连接的 Oracle 实例,诸如 TWO_TASK(Linux 下)或 LOCAL(Windows 下)与 ORACLE_SID 等。

要使用 Easy Connect 命名方法,PHP 必须与 Oracle g 或更高版本的客户端库进行链接。Oracle g 的 Easy Connect 串格式:[//]host_name[:port][/service_name]。Oracle g 则为:[//]host_name[:port][/service_name][:server_type][/instance_name]。服务名可在数据库服务器机器上运行 Oracle 实用程序 lsnrctl status 找到。

PHP:oci_connect()的用法_Oracle函数(php odbc)

tnsnames.ora 文件可在 Oracle Net 查找路径中,此路径包括 $ORACLE_HOME/network/admin 和 /etc。 另一种方法是设置 TNS_ADMIN 以便通过 $TNS_ADMIN/tnsnames.ora 来读取。表确认 web 守护进程可读取此文件。

character_set

使用 Oracle客户端库来确定字符集。字符集不需要与数据库的字符集相匹配。如果不匹配,Oracle会尽可能地将数据从数据库字符集进行转换。因为依赖于字符集,可能不能给出可用的结果。转换也增加一些时间开销。

如果不指定,Oracle 客户端用 NLS_LANG 环境变量来决定字符集。

传递此参数可减少连接时间。

session_mode

此参数在 PHP 5(PECL OCI.1)版本开始可用,并收受下列值:OCI_DEFAULT,OCI_SYSOPER和 OCI_SYSDBA。如为OCI_SYSOPER 或 OCI_SYSDBA其中之一,此函数将会使用外部的证书建立有特权的连接。有特权的连接默认是禁用的。需要将oci8.privileged_connect设为 On 来启用。

PHP 5.3(PECL OCI8 1.3.4)引进了 OCI_CRED_EXT 模式值。使用外部或操作系统认证必需在 Oracle 数据库中进行配置。OCI_CRED_EXT 标志只可用于用户为 "/",密码为空的情况。oci8.privileged_connect 可为 On 或 Off。

OCI_CRED_EXT 可与 OCI_SYSOPER 或 OCI_SYSDBA 模式组合使用。

OCI_CRED_EXT 由于安全的原因不支持 Windows 系统。

返回值

Returns a connection identifier or FALSE on error.

范例

Example #2 Basic oci_connect() using Easy Connect syntax

<?php//ConnectstotheXEservice(i.e.database)onthe"localhost"machine$conn=oci_connect('hr','welcome','localhost/XE');if(!$conn){$e=oci_error();trigger_error(htmlentities($e['message'],ENT_QUOTES),E_USER_ERROR);}$stid=oci_parse($conn,'SELECT*FROMemployees');oci_execute($stid);echo"<tableborder='1'>n";while($row=oci_fetch_array($stid,OCI_ASSOC+OCI_RETURN_NULLS)){echo"<tr>n";foreach($rowas$item){echo"<td>".($item!==null?htmlentities($item,ENT_QUOTES):"&nbsp;")."</td>n";}echo"</tr>n";}echo"</table>n";?>

Example #3 Basic oci_connect() using a Network Connect name

<?php//ConnectstotheMYDBdatabasedescribedintnsnames.orafile,//Oneexampletnsnames.

Example #4 oci_connect() with an explicit character set

<?php$conn=oci_connect('hr','welcome','localhost/XE','ALUTF8');if(!$conn){$e=oci_error();trigger_error(htmlentities($e['message'],ENT_QUOTES),E_USER_ERROR);}$stid=oci_parse($conn,'SELECT*FROMemployees');oci_execute($stid);echo"<tableborder='1'>n";while($row=oci_fetch_array($stid,OCI_ASSOC+OCI_RETURN_NULLS)){echo"<tr>n";foreach($rowas$item){echo"<td>".($item!==null?htmlentities($item,ENT_QUOTES):"&nbsp;")."</td>n";}echo"</tr>n";}echo"</table>n";?>

Example #5 Using multiple calls to oci_connect()

<?php$c1=oci_connect("hr","welcome",'localhost/XE');$c2=oci_connect("hr","welcome",'localhost/XE');//Both$c1and$c2showthesamePHPresourceidmeaningtheyusethe//sameunderlyingdatabaseconnectionecho"c1is$c1<br>n";echo"c2is$c2<br>n";functioncreate_table($conn){$stmt=oci_parse($conn,"createtablehallo(testvarchar2())");oci_execute($stmt);echo"Createdtable<br>n";}functiondrop_table($conn){$stmt=oci_parse($conn,"droptablehallo");oci_execute($stmt);echo"Droppedtable<br>n";}functioninsert_data($connname,$conn){$stmt=oci_parse($conn,"insertintohallovalues(to_char(sysdate,'DD-MON-YYHH:MI:SS'))");oci_execute($stmt,OCI_DEFAULT);echo"$connnameinsertedrowwithoutcommitting<br>n";}functionrollback($connname,$conn){oci_rollback($conn);echo"$connnamerollback<br>n";}functionselect_data($connname,$conn){$stmt=oci_parse($conn,"select*fromhallo");oci_execute($stmt,OCI_DEFAULT);echo"$connname----selecting<br>n";while(oci_fetch($stmt)){echo"".oci_result($stmt,"TEST")."<br>n";}echo"$connname----done<br>n";}create_table($c1);insert_data('c1',$c1);//Insertarowusingc1sleep(2);//sleeptoshowadifferenttimestampforthe2ndrowinsert_data('c2',$c2);//Insertarowusingc2select_data('c1',$c1);//Resultsofbothinsertsarereturnedselect_data('c2',$c2);//Resultsofbothinsertsarereturnedrollback('c1',$c1);//Rollbackusingc1select_data('c1',$c1);//Bothinsertshavebeenrolledbackselect_data('c2',$c2);drop_table($c1);//ClosingoneoftheconnectionsmakesthePHPvariableunusable,but//theothercouldbeusedoci_close($c1);echo"c1is$c1<br>n";echo"c2is$c2<br>n";//

注释

Note:

An incorrectly installed or configured OCI8 extension will often manifest itself as a connection problem or error. See Installing/Configuring for troubleshooting information.

Note:

In PHP versions before 5.0.0 use ocilogon() instead. 在当前版本中,旧的函数名还可以被使用,但已经被废弃并不建议使用。

参见

oci_pconnect() - 使用一个持久连接连到 Oracle 数据库 oci_new_connect() - 建定一个到 Oracle 服务器的新连接 oci_close() - 关闭 Oracle 连接

PHP:oci_fetch_all()的用法_Oracle函数 oci_fetch_all(PHP5,PECLOCI8=1.1.0)oci_fetch_all获取结果数据的所有行到一个数组说明intoci_fetch_all(resource$statement,array&$output[,int$skip[,int$maxrows[,int$flags]]])oci_fetch_all()

PHP:oci_execute()的用法_Oracle函数 oci_execute(PHP5,PECLOCI8=1.1.0)oci_execute执行一条语句说明booloci_execute(resource$stmt[,int$mode])oci_execute()执行一条之前被解析过的语句(见oci_parse())。可选参数mode

PHP:oci_error()的用法_Oracle函数 oci_error(PHP5,PECLOCI8=1.1.0)oci_error返回上一个错误说明arrayoci_error([resource$source])对于大多数错误,参数是最适合的资源句柄。对于oci_connect(),oci_new_connect()

标签: php odbc

本文链接地址:https://www.jiuchutong.com/biancheng/281116.html 转载请保留说明!

上一篇:PHP:oci_close()的用法_Oracle函数(php occ)

下一篇:PHP:oci_fetch_all()的用法_Oracle函数

  • 矿产资源补偿费计入管理费用吗
  • 买赠怎么做会计分录
  • 我国会计准则规定,会计核算以人民币为记账本位币
  • 企业所得税必须计提吗?什么时候计提?
  • 股东实物分红账务怎么做
  • 已提足折旧的固定资产残值怎么处理
  • 人工材料成本怎么分配
  • 营业费用率说明什么
  • 购买的职业险计入哪个科目
  • 法人购买设备怎么入账
  • 付垫资款给其他公司应该怎么做账?
  • 增值税普通发票跨月冲红
  • 分公司代理人
  • 退休返钱怎么算的
  • 转售的物业
  • 收到房费的专用发票能抵扣吗?
  • 建安企业劳务成本怎么入账
  • etc卡预充值后怎么办
  • 坏账处理的所得税税率
  • 一级建造师继续教育
  • 分支机构能否随总机构认定为一般纳税人
  • 商品出口消费税计算方法
  • 预提费用年底如何结转
  • cmd telnet命令大全
  • 进项大于销项会计分录
  • 转让无形资产的所有权计入什么科目
  • php数据库分页是怎么实现的
  • php开源软件
  • php获取远程文件扩展名
  • 鸿蒙实用工具在哪里
  • php字符串变量
  • xcsp_eclib.dll
  • 货物运输税费
  • 物业费可以分期付款吗
  • thinkphp框架怎么用
  • 优先股票与普通股票相比,其优先权主要指
  • php 数学函数
  • 税务局清税
  • 被投资的公司注销后投资公司怎么处理
  • 个人独资企业计提的各种准备金支出不得扣除
  • 车辆计提折旧需要结转吗
  • 仓库发货打包员工作内容
  • 固定资产清理属于什么科目借方增加还是减少
  • 检验费用会计分录
  • 当月进货没有认证怎么办
  • 事业单位公务员考试条件
  • 滞纳金冲留底税额怎么算
  • 企业购买新能源车免购置税吗
  • 免征的教育费附加怎么做账
  • 非流动性资产有
  • 收到货款就必须付货款吗
  • 代扣代缴增值税申报期限
  • 工会经费计提比例0.8%和2%有何区别
  • 免税收入怎么做分录
  • MySQL exists 和in 详解及区别
  • 远程登陆服务器命令
  • ubuntu怎么编辑文件
  • 如何激活Win8.1
  • win10怎么设置允许远程
  • win8.1笔记本
  • linux系统叫啥
  • win8怎么打开管理员命令提示符
  • win8怎么彻底删除安装的软件
  • 代理服务器只能代理客户端http的请求
  • unix怎么操作
  • Windows 7 Apache下计算机无法访问局域网网站的解决方法
  • shell脚本函数及传参
  • mybatis框架执行流程
  • 最流行的民宿装修设计
  • linux禁止所有用户登录
  • bash 入门
  • javascript组成
  • python 终端
  • jquery的gt
  • 国税公告2016年14解读
  • 进口肉的税率是多少
  • 大连税务局王局长
  • 车船税每年多少钱
  • 出口退税的管理办法
  • 控件未安装或控件版本过低
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设