位置: 编程技术 - 正文

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函数

  • 2020年小微企业所得税税率
  • 增值税可以在企业所得税时扣除吗
  • 铜川缴纳房屋契税怎么算
  • 离职补偿金怎么做账
  • 营业外收入在所得税表中填入哪个科目
  • 企业所得税申报表在哪里查询
  • 小规模没有成本票企业所得税怎么办呀
  • 存货项目包括哪些具体内容
  • 各部门发生的医保费用
  • 会计科目应收账款什么意思
  • 股权转让的溢价要交什么税
  • 金税三期个人所得税怎么下载
  • 实习生需要缴纳个税吗?
  • 水利基金按含税还是不含税申报
  • 小规模减免附加税会计分录怎么做
  • 工程物资期末余额的填列方法
  • 企业年会的费用会计分录
  • 预付卡销售和充值
  • 基金投资于什么
  • 增值税价外费用如何开票
  • linux命令行使用鼠标
  • PHP:pg_fetch_object()的用法_PostgreSQL函数
  • 点云目标检测数据集
  • 应收股利的主要特点
  • 最小的外置dvd刻机多少寸
  • 如何补办二手车牌照
  • 加计扣除减免政策
  • 科技推广和应用服务业行业
  • 什么是Unicode
  • php分割数组
  • mac apache php
  • python如何设置窗口背景色
  • 小规模升级一般纳税人后可以降为小规模吗
  • 机动车发票哪几联 做帐
  • 应税服务项目减除清单0申报如何填写
  • 国外公司给国内个人汇款
  • 结转个人承担的社保费分录
  • 限售股 缴税
  • 补贴,津贴是否合理
  • 汇票没到期如何兑现
  • 固定资产一次性扣除政策
  • 计提固定资产折旧是什么意思
  • 小企业长期债券投资交易费用
  • 企业如何代员工做个税汇算清缴
  • 职工工资加计扣除
  • 现金折扣要扣除折扣金额入账吗
  • 工程施工科目下可以设置咨询费吗
  • 财务费用减少记借方还是贷方
  • 出口货物不免不退
  • 车辆抵押贷款影响以后卖车吗
  • 应收账款占比高受哪些因素影响
  • 没有进货发票可以开票吗?
  • 预付账款暂估是什么意思
  • 支付宝扣手续费是怎么回事
  • 原始凭证填制的基本内容
  • 管理费用业务招待费包括哪些
  • 业务提成怎么做账内账
  • 建账时应考虑的问题包括下列哪三项
  • mysql函数返回值类型
  • mysql数据库简单介绍
  • 双击盘符弹出属性
  • vs2008如何使用
  • 如何查看win10版本是不是正版
  • mac的itunes怎么下载歌曲
  • mac进入睡眠时间长
  • driver's
  • win7无权关闭计算机
  • win8系统可以装win7系统吗
  • windows1021h1新功能
  • JavaScript中的数据类型分为两大类
  • nodejs web3
  • jQuery使用$.ajax进行即时验证的方法
  • javascript简明教程
  • python引用和调用有什么不同
  • python有没有二维数组
  • 基于bootstrap的网站
  • 个人所得税缴纳怎么申报流程
  • 服务行业工作总结不足
  • 国税地税什么时候申报
  • 涉密人员保密教育培训可以采取
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设