位置: 编程技术 - 正文

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

  • 多缴纳社保怎么处理
  • 民办非企业收到捐赠固定资产
  • 收取违约金是否交税
  • 计入损益的税
  • 发票税率金额如何得出
  • 代扣代缴增值税是什么意思
  • 招待费和福利费每年标准
  • 收取不合规发票怎么处理
  • 已认证进项发票转出会计分录
  • 企业进行股票买入的条件
  • 验资资金转出如何做账
  • 公司注册核税后如何建账?
  • 不锈钢交几个点税
  • 出现一窗式比对失败,该纳税人没有防伪税控比对信息!
  • 代开专票怎么做账?
  • 资产负债表季度申报期末余额怎么填
  • 背书出去的票据信息在哪里查询
  • 小规模纳税人增值税超过30万怎么纳税
  • 个体工商户怎么交社保
  • 如何在excel中链接图片对方能显示
  • win10设置里没有飞行模式
  • 原材料暂估分录
  • 发票金额与实际金额不一致违法吗
  • 无形资产商标设计图片
  • 建筑业产值填哪个数据
  • 发放应付职工薪酬的账务处理
  • 买二手房避税
  • 深入解析wordpress
  • 土地出资是否涉及企业所得税
  • jetson nano nvidia-smi
  • 合并及公司利润表
  • 旺阿雷自然保护区里的旺阿雷瀑布,新西兰北岛 (© Nathan Kavumbura/Getty Images)
  • framework core
  • arcore如何使用
  • vs code前端插件
  • 本月损益类未结转为零的一级科目
  • input输入语句
  • 主动学习(Active Learning,AL)的理解以及代码流程讲解
  • Laravel5中防止XSS跨站攻击的方法
  • 个人佣金收入怎样交税
  • 客户少给了钱怎么要
  • 租店铺需要什么流程需要注意什么事项?
  • 开发公司出租未开发发票
  • 股票印花税和佣金是一样的吗
  • 员工福利费的账务处理
  • 个人咨询费发票怎么开
  • 房地产行业账务处理和主要税种
  • 补助资金如何做账
  • 门面转让费做账怎么做
  • 公司注销资本公积
  • 土地使用税如何计算公式
  • 收入与成本不配合
  • 总公司和分公司如何分离
  • 所得税费用为什么不计入营业利润
  • 房产开发企业以什么为主
  • sql server查询
  • Fedora Core 5.0 安装教程,菜鸟图文教程(linux text)
  • win8驱动在哪个文件夹
  • ubuntu安装visual studio2019
  • xp系统桌面图标怎么设置
  • mac隐藏菜单栏
  • windows8如何使用
  • 微软2021年新系统
  • Win10预览版拆弹
  • windows7开机启动
  • 水下摄影技巧
  • jquery设置鼠标样式
  • jquery div innerhtml
  • nodejs xhr
  • 动态修改ip
  • easyui combobox设置值
  • python中字典怎么用
  • VectorField2D
  • 安卓解析工具
  • jquery打开文件对话框
  • jquery新增属性
  • 广州地税预约网官网
  • 建筑工程开票要在项目所在地
  • 北京市地税局第一稽查局郭洪鑫
  • 国内货物运输代理行业代码是多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设