位置: 编程技术 - 正文

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年职工福利费扣除比例
  • 旅游服务费可以抵扣增值税
  • 不管金税四期上线与否,税务严查一刻也没有放松!
  • 小微企业工会
  • 附加税是销项税减去进项税
  • 无法运行loot
  • 结转工资结算中各种代扣款项
  • 金蝶固定资产减少怎么做
  • 国家减免税收
  • 生产车间设备检测费计入什么科目
  • 为什么电脑连上蓝牙耳机却是外放
  • 预付款无法收回账务处理
  • 吉隆坡石油双塔有多高
  • 罚款应该计入营业所吗
  • 内退人员
  • 本月购买原材料怎么入账
  • 查补以前年度收入怎么做会计分录
  • 二手车交易税咋算
  • 营业利润是怎么计算的?
  • layui表格编辑功能
  • ajax与php交互
  • 借款合同印花税怎么做账
  • 申报表已申报未交款后作废
  • nodemon卸载
  • pytorch训练函数
  • 增删改查功能实现
  • php+jquery+html实现点击不刷新加载更多的实例代码
  • 个体工商户属于灵活就业人员吗
  • 银行日记账错误更正案例
  • 打车费的会计分录
  • mysql用在哪些方面
  • php安装插件
  • 固定资产入账是税前还是税后
  • 织梦森林官网
  • 金税三期个人所得税申报
  • 游戏公司不开票怎么缴税
  • 采购商品没有进账怎么做账
  • 企业主营业务收入净额怎么算
  • 建筑工程租赁费属于什么费用
  • 事业单位收到财政拨款会计分录
  • 应付账款期初期末
  • 母子公司可以合并吗
  • 民办非企业单位免税
  • 公司注销资本公积
  • 为什么规定视同销售?
  • sqlserver批量删除数据
  • system is boot up with
  • windows xp怎么打开
  • Qq浏览器怎么切换成极速模式
  • ubuntu server怎么样
  • 电脑ip地址设置在哪里
  • linux做raid10
  • win10教育版登录
  • angular.js
  • shell切分
  • django orm sqlalchemy
  • nodejs cgi
  • 安卓自定义app
  • node的使用
  • CentOS下mysql定时备份Shell脚本分享
  • 关于javascript的说法
  • jquery移动div
  • c语言node定义
  • 安卓手机管家删除的照片怎么恢复
  • 类库怎么用
  • 北京国家税务局待遇
  • 国税总局王军简历
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设