PHP oracle更新数据,PHP操作Oracle数据库

PHP操作Oracle数据库(OCI数据抽象层)

OCI(Oracle 8 Call-Interface)是PHP中内置的数据库抽象层函数。

下面针对连接Oracle数据库操作数据库的常见任务举例说明:

=======================基本查询:无条件查询===================

1、数据库连接:函数:oci_connect()

函数:resource oci_connect ( string username, string password [, string db [, string charset [, int session_mode]]] )

说明: 函数的返回值为资源

username、password:是Oracle的用户名密码,即方案名及密码

db:是可选参数,如果使用本地的Oracle实例或者使用tnsnames.ora配置文件中注册的本地服务名,直接提供其名称即可。

如果此参数留空,则使用本地的ORACLE_SID或者搜索tnsnames.ora文件的注册的默认本地服务名。

charset:参数是在Oracle9.2以上的版本使用的参数,默认可以留空,使用NLS_LANG 环境变量替代。

session_mode:用于设定使用特权身份登录(默认禁用),默认有3个选项:OCI_DEFAULT,OCI_SYSOPER 和 OCI_SYSDBA

范例:连接本机注册的本地服务名为hy的Oracle实例,用户名/密码为scott/tiger

//建立连接

$conn=oci_connect("scott","tiger","hy");

//检查连接是否成功

if($conn){

echo "connect success";

}

else{

echo "connect error";

}

?>

2、编译SQL语句:函数:oci_parse()

函数:resource oci_parse ( resource connection, string query )

说明: 函数返回值为资源,编译以字符串形式提供的SQL语句

connection:为在第一步中创建的链接资源标识符

query:是一个查询字符串,用双引号引起来。

在 connection 上配置 query 并返回语句标识符以用于 oci_bind_by_name(),oci_execute() 以及其它函数

$stmt=oci_parse($conn,"select * from emp");

?>

3、执行SQL语句:函数:oci_execute();

函数:bool oci_execute ( resource stmt [, int mode] )

说明: 函数返回布尔值,执行一条之前被解析过的语句

stmt:在第二步创建的编译资源名

mode:允许定义执行模式,

OCI_COMMIT_ON_SUCCESS(默认):语句执行成功则自动提交

OCI_DEFAULT:自动建立一个事务,此事务会在连接关闭或者脚本结束自动回退,如果想提交,需要

明确调用oci_commit() 提交事务,或者调用oci_rollback()回退事务

oci_execute($stmt,OCI_DEFAULT);

?>

4、提取查询的结果:

函数: int oci_fetch_all ( resource statement, array &output [, int skip [, int maxrows [, int flags]]] )

提取所有的结果数据到数组(返回获取数据的行数)

array oci_fetch_array ( resource statement [, int mode] )

提取结果数据的一行到一个关联数组(OCI_ASSOC)或者数字索引数组(OCI_NUM )或两者(OCI_BOTH)等

array oci_fetch_assoc ( resource statement )

提取结果数据的一行到一个关联数组

object oci_fetch_object ( resource statement )

提取结果数据的一行到一个对象

array oci_fetch_row ( resource statement )

提取结果数据的一行到一个数字索引数组

$result=oci_fetch_assoc($stmt);

print_r($result);

?>

5、释放资源:

函数: bool oci_free_statement ( resource statement )

释放关联于语句或游标的所有资源

bool oci_close ( resource connection )

关闭 Oracle数据库连接

oci_free_statement($statement);

oci_close($Oracle_conn);

=======================基本查询:有查询条件的查询===================

1、数据库连接(略)

2、编译SQL语句(略)

3、绑定变量及执行:

函数:bool oci_bind_by_name ( resource stmt, string ph_name, mixed &variable [, int maxlength [, int type]] )

将 PHP 变量 variable 绑定到 Oracle 的位置标志符 ph_name。length 参数确定该绑定的最大长度,如果要绑定一个

抽象数据类型,使用type参数

$Oracle_conn=oci_connect("scott","tiger","hy");

$query="select * from emp where job=upper(:job) and deptno=upper(:deptno)";

$statement=oci_parse($Oracle_conn,$query);

//设置绑定变量的取值

$job="CLERK";

$deptno=10;

oci_bind_by_name($statement,":job",$job);

oci_bind_by_name($statement,":deptno",$deptno);

//执行语句

oci_execute($statement);

//取得结果数据

oci_fetch_all($statement,$result);

foreach($result as $rows){

echo "
";

foreach($rows as $col_values){

echo $col_values;

}

}

//释放资源

oci_free_statement($statement);

oci_close($Oracle_conn);

?>

=======================数据插入操作===================

=======================1、通过变量提供值======================

1、数据库连接(略)

2、编译SQL语句(略)

3、绑定变量及执行:

$Oracle_conn=oci_connect("scott","tiger","hy");

$query="insert into emps(empno,ename,sal,hiredate) values(:empno,:ename,:sal,:hiredate)";

$statement=oci_parse($Oracle_conn,$query);

//===============设置绑定变量的取值(通过变量提供值)================

$empno=1203;

$ename='TEST';

$sal=1500;

$hiredate='03-12月-81';//如果是使用Oracle数据库服务器时间,则在DML语句中直接提供sysdate

oci_bind_by_name($statement,":empno",$empno);

oci_bind_by_name($statement,":ename",$ename);

oci_bind_by_name($statement,":sal",$sal);

oci_bind_by_name($statement,":hiredate",$hiredate);

//执行语句,设置执行模式为自动提交

oci_execute($statement,OCI_COMMIT_ON_SUCCESS);

//检查影响的行数

if(oci_num_rows){

echo "插入成功";

}

//释放资源

oci_free_statement($statement);

oci_close($Oracle_conn);

?>

=======================2、通过数组提供值======================

$Oracle_conn=oci_connect("scott","tiger","hy");

$query="insert into emps(empno,ename) values(:empno,:ename)";

$statement=oci_parse($Oracle_conn,$query);

//===============设置绑定变量的取值(通过数组提供值)================

$data=array(

1884=>"a",

1885=>"b",

1886=>"c");

oci_bind_by_name($statement,":empno",$empno,32);

oci_bind_by_name($statement,":ename",$ename,32);

foreach ($data as $empno => $ename) {

if(oci_execute($statement)){

echo "插入成功"."
";

}

}

oci_free_statement($statement);

oci_close($Oracle_conn);

?>

PHP操作Oracle数据库(OCI数据抽象层)(二)

=======================PHP调用存储过程=========================

//连接数据库

$Oracle_conn=oci_connect("scott","tiger","hy");

//分配并返回一个游标句柄

$cur=oci_new_cursor($Oracle_conn);

//创建调用语句

$query="call get_emp_inf(:deptno,:v_cur)";

$statement=oci_parse($Oracle_conn,$query);

//提供输入参数

$deptno=10;

//绑定游标句柄,接收返回的游标参数

oci_bind_by_name($statement,":deptno",$deptno,16);

oci_bind_by_name($statement,":v_cur",$cur,-1,OCI_B_CURSOR);

//执行

oci_execute($statement);

//获取返回的游标数据到游标句柄

oci_execute($cur);

//遍历游标内容

while ($dat = oci_fetch_row($cur)) {

var_dump($dat);

}

oci_free_statement($statement);

oci_close($Oracle_conn);

?>

=======================PHP调用存储函数=========================

//连接数据库

$Oracle_conn=oci_connect("scott","tiger","hy");

//创建调用语句

$query="begin :res:=chk_emp_exist(:empno); end;";

$statement=oci_parse($Oracle_conn,$query);

//提供输入参数

$empno=10;

$res=-100;//返回值可能出现负值,所以初始化时用负值

//绑定变量,接收返回的参数

oci_bind_by_name($statement,":res",$res);

oci_bind_by_name($statement,":empno",$empno);

//执行

oci_execute($statement);

//判断是否存在

if($res==1){

echo "此员工存在";

}

else{

echo "此员工不存在";

}

oci_free_statement($statement);

oci_close($Oracle_conn);

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值