php oracle 操作 sql语句中能不能添加数组_如何在PHP中使用Oracle数据库_php

在php3.0以上版本中,php内置了几乎目前所有的数据库处理函数,包括oracle;在本文中我们通过一个实例来介绍了如何使用这些函数来操作Oracle数据库。

PHP提供了2大类API(应用程序接口)来操作Oracle数据库。一个是标准的Oracle处理函数(ORA) 另一个是Oracle 8调用接口函数(OCI8). 后者只能在Oracle 7或8版本上使用。 由于OCI8 提供了很多优化选项,因此只要有可能就应该采用 OCI8 接口。这里我们分别用这二种函数集进行了演示。

首先本文的前提假设你已经装好了 Oracle数据库环境 和 PHP 开发环境.  如果不懂也没多大关系,网上有很多相关的好文章可以参考。

第一步:创建 一个实验用的数据库

这个问题你可以请你的数据库管理员或参考Oracle用户手册处理,这里不再多讲

用 ORA 建立数据表

即使你已经创建好了数据表,也请看看本段文字。它可以告诉你如何用PHP+SQL的技术操作Oracle

在本例中我们创建了一个用于存放个人email的数据表

相关PHP代码:

PutEnv("ORACLE_SID=ORASID");

$connection = Ora_Logon ("username", "password");

if ($connection == false){

echo Ora_ErrorCode($connection).": ".Ora_Error($connection)."";

exit;

http://www.gaodaima.com/47976.html如何在PHP中使用Oracle数据库_php

}

$cursor = Ora_Open ($connection);

if ($cursor == false){

echo Ora_ErrorCode($connection).": ".Ora_Error($connection)."";

exit;

}

$query = "create table email_info " .

"(fullname varchar(255), email_address varchar(255))";

$result = Ora_Parse ($cursor, $query);

if ($result == false){

echo Ora_ErrorCode($cursor).": ".Ora_Error($cursor)."";

exit;

}

$result = Ora_Exec ($cursor);

if ($result == false){

echo Ora_ErrorCode($cursor).": ".Ora_Error($cursor)."";

exit;

}

Ora_Commit ($connection);

Ora_Close ($cursor);

Ora_Logoff ($connection);

?>

为了处理Oracle数据库,我们首先要和Oracle建立一个联结。

语法是 Ora_Logon (user, password),返回一个connectID..

提醒: 在此之前我们还必须设置环境变量: ORACLE_SID的值.

现在,我们可以通过该联结的 ID对Oracle进行交互式操作了。数据表名字就叫email_info吧。该表由2个域组成,一个存储个人全名,(如:晓月)一个存储email地址如(xiaoyue@163.net)

还需要一个游标 Ora_Open.  该游标常常用来枚举数据。我们用 Ora_Parse 或 Ora_Exec 查询Oracle的结果集.  Ora_Parse 效验SQL语法正确性 而 Ora_Exec 则执行相应的SQL语句.  如果这一切都正常运行,那么我们就运行 Ora_Commit来确认.

Create A Table Using OCI

下面我们将建立一个email个人信息簿。这次采用OCI8 API指令

相关PHP代码:

$query = "create table email_info " .

"(fullname varchar(255), email_address varchar(255))";

$cursor = OCIParse ($connection, $query);

if ($cursor == false){

echo OCIError($cursor)."

";

exit;

}

$result = OCIExecute ($cursor);

if ($result == false){

echo OCIError($cursor)."

";

exit;

}

OCICommit ($connection);

OCILogoff ($connection);

?>

我们可以看到这2段代码语法几乎都一样,区别仅仅函数名字不同; 其次,在OCI8中我们不需要专门运行打开游标的指令,在调用 OCIParse 系统就自动返回了一个游标ID.

利用 ORA 向数据表 'email_info' 输入数据

当用户浏览这段脚本时,显示一个由姓名、email输入域组成的表单;当用户添好数据点击提交时,脚本程序将把这姓名、email保存到'email_info'数据表中。

相关PHP代码:

$connection = Ora_Logon ("username","password");

if ($connection == false){

echo Ora_ErrorCode($connection).": ".Ora_Error($connection)."

";

exit;

}

$cursor = Ora_Open ($connection);

if ($cursor == false){

echo Ora_ErrorCode($connection).": ".Ora_Error($connection)."

";

exit;

}

$query = "insert into email_info values ('$fullname', '$email')";

$result = Ora_Parse ($cursor, $query);

if ($result == false){

echo Ora_ErrorCode($cursor).": ".Ora_Error($cursor)."

";

exit;

}

$result = Ora_Exec ($cursor);

if ($result == false){

echo Ora_ErrorCode($cursor).": ".Ora_Error($cursor)."

";

exit;

}

Ora_Commit ($connection);

Ora_Close ($cursor);

Ora_Logoff ($connection);

}

else{

echo '

<FORM action=insert.php method=post>

请输入姓名

<INPUT name=fullname></INPUT>

请输入Email地址

<INPUT name=email></INPUT>

<INPUT name=submit type=submit value=click></INPUT>

</FORM>

';

}

?>

对了,这段脚本必须存为insert.php,因为在调用的页面中指定insert.php为表单处理程序

浏览效果:

请输入姓名

请输入Email地址

利用OCI向数据表 'email_info' 输入数据

同上,只不过用OCI来写

相关PHP代码:

$connection = OCILogon ("username","password");

if ($connection == false){

echo OCIError($connection)."

";

exit;

}

$query = "insert into email_info values ('$fullname', '$email')";

$cursor = OCIParse ($connection, $query);

if ($cursor == false){

echo OCIError($cursor)."

";

exit;

}

$result = OCIExecute ($cursor);

if ($result == false){

echo OCIError($cursor)."

";

exit;

}

OCICommit ($connection);

OCILogoff ($connection);

}

else{

echo '

<FORM action=insert.php method=post>

请输入姓名

<INPUT name=fullname></INPUT>

请输入 Email 地址

<INPUT name=email></INPUT>

<INPUT name=submit type=submit value=click></INPUT>

</FORM>

';

}

?>

对了,这段脚本必须存为insert.php,因为在调用的页面中指定insert.php为表单处理程序

浏览效果:

请输入姓名

请输入Email地址

利用ORA列出全部数据表'email_info'中的数据

下面,我们将逐条读出数据库的内容,并以html表格形式显示'email_info'数据表中的数据

相关PHP代码:

$cursor = Ora_Open ($connection);

if ($cursor == false){

echo Ora_ErrorCode($connection).": ".Ora_Error($connection)."

";

exit;

}

$query = "select * from email_info";

$result = Ora_Parse ($cursor, $query);

if ($result == false){

echo Ora_ErrorCode($cursor).": ".Ora_Error($cursor)."

";

exit;

}

$result = Ora_Exec ($cursor);

if ($result == false){

echo Ora_ErrorCode($cursor).": ".Ora_Error($cursor)."

";

exit;

}

echo "

";

echo "

Full Name

Email Address

";

while (Ora_Fetch_Into ($cursor, &$values)){

$name = $values[0];

$email = $values[1];

echo "

$name

$email

";

}

echo "

";

Ora_Close ($cursor);

Ora_Logoff ($connection);

?>

程序运行的浏览效果如下所示:

姓名

Email 地址

春花

springflower@163.com

秋月

autumnmoon@163.com

...

...

利用OCI列出全部数据表'email_info'中的数据

同上,只不过用OCI来写

相关PHP代码:

$query = "select * from email_info";

$cursor = OCIParse ($connection, $query);

if ($cursor == false){

echo OCIError($cursor)."

";

exit;

}

$result = OCIExecute ($cursor);

if ($result == false){

echo OCIError($cursor)."

";

exit;

}

echo "

";

echo "

Full Name

Email Address

";

while (OCIFetchInto ($cursor, $values)){

$name = $values[0];

$email = $values[1];

echo "

$name

$email

";

}

echo "

";

OCILogoff ($connection);

?>

程序运行的浏览效果如下所示:

姓名

Email 地址

春花

springflower@163.com

秋月

autumnmoon@163.com

...

...

欢迎大家阅读《如何在PHP中使用Oracle数据库_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码

e7ce419cf2d6ad34d01da2ceb8829eed.png

微信 赏一包辣条吧~

023a57327877fb4402bcc76911ec18ea.png

支付宝 赏一听可乐吧~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/555232.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql where过滤条件中and连接的两个条件的顺序不必和建立的联合索引的字段顺序一致_mysql and 顺序_mysql执行过程以及顺序

mysql中and的判断顺序 select * from a join b on 条件一 and 条件二条件一和二都是判断 id 字段, 条件一和条件二哪个先执行? 解析器会自动选择最优的流程执行的 这两个都是平级条件,理论上是没有先后顺序的! 没有顺序&#xff…

php开发电商项目的技术,[项目实战] php电商开发基本功课程 电商后台实战开发视频教程 共6章...

1-1需求分析.mp41-2 数据表建立.mp41-3 前期准备.mp42-1 验证码制作.mp42-2 数据库操作函数封装.mp42-3 登录验证.mp42-4 自动登录功能.mp42-5 后台用户信息管理.mp42-6 分页页码代码封装.mp42-7 后台用户信息分页页码制.mp43-1 添加分类信息.mp43-2 显示分类信息.mp43-3 修改分…

MySQL优化器_MySQL查询优化器

MySQL优化器 MySQL架构图 讲到MySQL,就绕不开他的架构图。MySQL是一个经典的C/S架构。服务器这边分两层:第一层是Server层,第二层是存储引擎。Server层处理主要的业务操作流程,但不关心具体的存储逻辑。存储逻辑由存储引擎层去…

php取商,PHP获取百度关键词排名

PHP获取百度关键词排名$k$_GET[‘k’] ? $_GET[‘k’] : ‘蓝普网络‘;$u$_GET[‘u’] ? $_GET[‘u’] : ‘www.wbphp.cn’;$rn’50’;$url “https://www.baidu.com/s?ieutf-8&wd”.$k.”&rn”.$rn;$ch curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_se…

MySQL性能优化(一)MySQL中SQL语句是如何执行的?

该篇章将开始整理MySQL的优化,不过开始之前,我们想了解清楚那就是MySQL是怎么执行的。 文章目录1.MySQL驱动2.应用系统数据库连接池3.MySQL数据库连接池4.SQL执行过程4.1.线程监听:监听网络请求中的SQL语句4.2.SQL接口:负责处理接…

php通过ajax下载文件,通过Ajax如何请求下载Execl文件

本篇文章给大家分享的是关于通过Ajax如何请求下载Execl文件,内容很不错,有需要的朋友可以参考一下,希望可以帮助到大家。通过Ajax请求下载Execl 的问题,掉进一个坑里半个多小时,特此来记录一下 。起初 我误以为是后台的…

2023_Spark_实验三十三:配置Standalone模式Spark3.4.2集群

实验目的:掌握Spark Standalone部署模式 实验方法:基于centos7部署Spark standalone模式集群 实验步骤: 一、下载spark软件 下载的时候下载与自己idea里对应版本的spark News | Apache Spark 选择任意一个下载即可 - spark 3.4.1 - spark …

MySQL性能优化(二)InnoDB之日志文件

文章目录1.MySQL日志记录文件1.1.回顾SQL语句的执行1.2.InnoDB内存结构:缓冲池1.3.记录日志:Undo和Redo1.3.1.Undo日志文件:记录数据修改前的值1.3.2.Redo日志文件:记录数据即将修改值1.3.3.Undo和Redo的区别(记录、前…

php正则检查QQ,PHP 正则匹配手机号的QQ号

//匹配手机号码//$mode /\d{3}-\d{8}|\d{4}-\d{7}|\d{11}/;//不匹配以-开头的手机号码//$mode /^((?!-).)*\d{3}-\d{8}|^((?!-).)*\d{4}-\d{7}|^((?!-).)*\d{11}/;//不匹配以 / 开头或结束的手机号码$mode /^((?!\/).)*\d{3}-\d{8}((?!\/).)*$|^((?!\/).)*\d{4}-\d{7}…

java获取单击内容,java – 单击菜单链接时,获取元素不是可点击的异常

我想点击菜单链接但没有运气.它总是显示异常 –Exception in thread “main” org.openqa.selenium.WebDriverException:unknown error: Element is not clickable at point (64, 64). Otherelement would receive the click: <div style”position: absolute; left:0px; to…

MySQL性能优化(三)Buffer Pool实现原理

文章目录1.回顾缓冲池 Buffer Pool2.配置Buffer Pool的大小3.Buffer Pool&#xff1a;数据结构3.1.磁盘数据结构&#xff1a;数据页3.2.缓冲池数据结构&#xff1a;数据页(缓存页)3.3.缓存页对应的描述信息4.Buffer Pool&#xff1a;初始化5.Buffer Pool&#xff1a;free链表6.…

import java.awt.event.;是什么意思,。import java.awt.*;import java.awt.event.*;import...

Photoshop软件是一种()。问卷中的一些词汇,如“经常”“通常”等已经成为人们有较大共识的词话,可以在设计时大量采用。不是主动脉弓的分支有如果合同中规定要求卖方货交船上,即完成交货,这可能属于 ( )关于CRTSI型板式无砟轨道中框架式特点叙述正确的有()。10kV配电线供电距离…

MySQL性能优化(四)redo log实现原理

文章目录1.redo log的作用2.redo log的结构2.1.redo log 记录2.2.redo log block2.3.redo log buffer3.redo log buffer 刷盘1.redo log的作用 首先我们都知道&#xff0c;执行增删改SQL语句的时候&#xff0c;都是针对一个表中的某些数据去执行的&#xff0c;此时的话&#x…

js二维数组传递java,ActiveX获取JavaScript传递的二维数组

此文参考了http://blog.csdn.net/playstudy/article/details/8259737&#xff0c;在此基础上做了改进// WebDlg.idl : WebDlg 的 IDL 源//// 此文件将由 MIDL 工具处理以// 产生类型库(WebDlg.tlb)和封送处理代码。#include "olectl.h"import "oaidl.idl";…

MySQL性能优化(五)undo log是如何实现MVCC的?

之前我们最开始的几篇文章就讲过&#xff0c;你除了写redolog日志还必须要写undo log日志&#xff0c;这个undo log日志是至关重要的&#xff0c;没有他&#xff0c;你根本都没办法回滚事务&#xff01; 1.事务 1.1.多线程并发执行多个事务 对于我们的业务系统去访问数据库而…

Linux中Shell脚本--awk的用法

语法格式&#xff1a;awk [选项] ‘指令’ 操作文件 常用选项&#xff1a;-F 指定分隔符&#xff0c;分隔符用""引起来 -v&#xff1a;varvalue在awk程序开始之前指定一个值valu给变量var&#xff0c;这些变量值用于awk程序的BEGIN快 -f&#xff1a;后面跟一个保存…

rh php70 php fpm,mac 通过brew安装php70 +php-fpm+ phalcon3.0.3

安装php7.0.15brew install homebrew/php/php70brew install homebrew/php/php70-mcryptbrew install homebrew/php/php70-redisbrew install homebrew/php/php70-msgpackbrew install homebrew/php/php70-memcached安装php后可执行文件所在路径(-v ):/usr/local/bin/php -v/us…

linux下的shell脚本(基础)

Shell是一种脚本语言&#xff0c;那么&#xff0c;就必须有解释器来执行这些脚本&#xff0c;常见的脚本解释器有&#xff1a; bash&#xff1a;是Linux标准默认的shell。bash由Brian Fox和Chet Ramey共同完成&#xff0c;是BourneAgain Shell的缩写&#xff0c;内部命令一共有…

mysql rsync复制,mysql复制又同步

mysql复制再同步由于一个老旧系统没有使用LVM分区,导致mylvmbackup不能使用。为了重新全量同步数据库&#xff0c;发现rsync可以使用&#xff0c;并且锁住数据库的时间不长。1. 首先刷新数据库到文件flush tables with read lock;unlock tables;2. 执行rsync进行数据库同步/usr…

解决springboot中只支持get请求,无法支持post请求

解决springboot中只支持get请求&#xff0c;无法支持post请求 报错信息如下&#xff1a; 405 相关类如下&#xff1a; RestController RequestMapping public class HttpServiceController {Autowiredprivate HttpSecretReport httpSecretReport;Autowiredprivate HttpSecret…