位置: 编程技术 - 正文

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

  • 个体工商户营业执照需要什么材料
  • 两个公司如何一起经营
  • 差额征税专用发票如何开
  • 车间加班视频
  • 拆迁补偿费返还政策
  • 互联网公司如何盈利
  • 公司购买车辆抵扣税
  • 劳动保护费现金流量表项目
  • 材料成本差异会计
  • 补偿金申报个所税如何录入?
  • 非居民企业所得税
  • 用于文化活动费用的科目
  • 微信小程序实现微信支付
  • 营改增后房地产企业如何开票
  • 污泥处置费用怎么开票
  • 关于建筑工程发包与承包下列说法正确的是
  • 增值税税控系统技术维护费计入什么科目
  • 怎样算纳税人
  • 企业自行建造的固定资产
  • 跨地区经营产生的GDP
  • 自然人转让股权税收筹划
  • 筹建期水电费计入什么科目
  • 外资企业投资国内企业程序
  • 进项税额转出多转了怎么办
  • 股份有限公司发行的股票溢价
  • 什么企业需要纳税申报
  • 免税销售额需要价税分离吗
  • mac qq音乐怎么下载mp3格式的音乐
  • window休眠
  • 上月发生的费用本月报销记账
  • 医疗机构医疗服务自查报告怎么写
  • 企业接到银行收账通知
  • 交易性金融资产是什么意思
  • 公允价值变动损益会计处理
  • 企业所得税汇算交税分录
  • linux多网卡聚合
  • node启动本地服务
  • 波特兰在哪
  • php统计目录中文怎么写
  • php use function
  • 代理业务资产的核算方法
  • Swagger-的使用(详细教程)
  • Vue3入门笔记----登录功能
  • ajax写接口
  • 织梦如何添加浮动广告
  • 出租车发票可以重新打印吗
  • 陈列费怎么开票
  • 公允价值变动损益借贷方向增减
  • windows下MySQL 5.7.3.0安装配置图解教程(安装版)
  • 增值税留抵税额是什么意思
  • 中级会计考试时间
  • 计量差错引起的原材料盘亏
  • 应付票据与应付账款增长的多的逃税问题
  • 企业应付账款的借方余额反映的是
  • 经营活动产生的现金净流量怎么算
  • 外币财务报表的折算
  • 个体户银行开户所需资料
  • 现金日记账的日期栏是指记账凭证的日期
  • mysql 1449解决
  • win10怎么设置为win7模式
  • windows vista build
  • macbook系统快捷键
  • 开机密码怎么删除
  • mac使用vim
  • win10玩上古世纪闪退
  • 微软商店更新错误
  • w10怎么创建此电脑
  • win7电脑无法上网 连接正常
  • windows10预览版是什么
  • opengl怎么学
  • linux如何启动tomcat
  • js中匿名函数的作用
  • 备份多个数据库
  • shell脚本中调用外部c程序
  • js判断时间差
  • jquery改变img的src
  • 深圳国家税务局赵雨婷处长
  • 纳税信用评级b是多少分
  • 国家税务总局服务平台
  • 个人所得税app密码给别人有风险吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设