科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件PHP+Oracle(OCI) 初步

PHP+Oracle(OCI) 初步

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在越来越多的PHP用户选择Oracle作为他们的数据库的情况下,如何访问PHP发布环境下的Oracle接口变的越发的重要了。我们将从快速的浏览一个简单基本且是更加明确的Oracle 的情况开始我们的旅程。

作者:51CTO.com整理  来源:51CTO.com整理  2007年9月14日

关键字: PHP ORACLE

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共19页)

从Oracle(OCI)开始

在越来越多的PHP用户选择Oracle作为他们的数据库的情况下,如何访问PHP发布环境下的Oracle接口变的越发的重要了。我们将从快速的浏览一个简单基本且是更加明确的Oracle 的情况开始我们的旅程。Oralce 和Oralce8 使用PHP的OCI8 函数库。在PHP手册里有简要的说明(http://www.php.net/manual/ref.oci8.php): 这些函数允许你访问Oracle 和 Oracle7d 的数据库,它们使用的是Oracle8 Call-Interface(OCI8)。你将需要Oracle8 的客户端函数库来使用这些扩展功能。

这些扩展功能比起标准的Oracle扩展功能来更加的灵活,它支持PHP全局及本地变量及与Oracle的连编,有完整的LOB,FILE及ROWID的支持并且允许你定义用户补充变量。

从这里开始,我将使用“Oracle”指代任何Oracle版本,这篇文章假定你已经安装并运行了PHP和Oracle。而Oracle的帮助可以在http://www.oracle.com 或者 http://technet.oracle.com 找到。

本文的观点是

1.连接到ORALCLE

2.建立并运行SQL语句

3.显示结果

4.限制/偏移量 接近“标记页数”的结果

作为一个附加的功能。你可以看看如何完成显示一个从很大的数据结果得出的限制/偏移量的查询。

<?php

/*我们将从一个基础的使用显示一个方案。在这个例子里使用的文件是由Rod Kreisler编写的新版本的文章(http://www.phpbuilder.com/columns/rod20000221.php3)。新版本的文件可以在http://php.socket7.net 找到。把$offset设置为0,如果被设置为0或者空的话。

*/

if (empty($offset) || $offset < 0) {

$offset=0;

}

/*我们将从一个基础的使用显示一个方案。在这个例子里使用的文件是由Rod Kreisler编写的新版本的文章(http://www.phpbuilder.com/columns/rod20000221.php3)。新版本的文件可以在http://php.socket7.net 找到。把$offset设置为0,如果被设置为0或者空的话。

*/

if (empty($offset) || $offset < 0) {

$offset=0;

}

$limit = 3;

/*

连接到Oralce,如果你愿意的话,可以在连接数据库的时候直接使用ORACLE_SID。使用PHP作为CGI使用非连续的连接,现在让我们在这个例子里使用这种非连续的连接。在windows里这个可以在注册表里设置,而在unix里你可以使用 putenv()函数putenv(“ORALCE_SID=ORASID”);

或者 ,如果你愿意,你可以在连接数据库的时候直接参考你的ORACLE_SID,让我们在这个例子里直接参考ORACLE_SID。

如果你使用PHP作为APACHE的模块的话,你可以使用持续连接。而使用非持续连接在使用PHP时作为CGI时,我们在这个例子里使用非持续连接。

*/

$conn = OCILogon("user_name", "password", "ORASID");

/*

错误提示。在没有数据库被连接的情况下,将会显示的错误信息并且退出脚本的执行。

*/

if (!$conn) {

echo "<h1>ERROR - Could not connect to Oracle</h1>";

exit;

}

/*

如果连接成功,$conn就是一个连接符。否则,脚本将结束并且输出“Could not connect to Oracle”的错误信息

现在开始来分析并且创建你的SQL语句,由无限制的查询结果得到可以记数的记录。

在这里的格式语句“Select count(*) from table_name”相当于count(),是个SQL函数将会在数据库里执行。比由依靠PHP计算得到的返回结果要好。

*/

$sql = "Select count(*) from table_name";

$stmt = OCIParse($conn, $sql);

if(!$stmt) {

echo "<h1>ERROR - Could not parse SQL statement.</h1>";

exit;

}

/*

如果你输入了一个错误的SQL语句或者出现了另一个错误,你将看到“无法分析SQL”的错误提示,$stmt现在就是一个定义语句。

现在执行你的分析语句

*/

OCIExecute($stmt);

/*

语句现在已经被执行了,但是正如你所看到的,没有结果标志符从OCIExecute()返回,由OCIParse()返回的结果包含了所有Oracle所需要的信息。

现在开始选择这个查询的结果,$total rows[0]将会包含一个数。如果没有行被返回,则显示错误并退出脚本的运行。

*/

OCIFetchInto($stmt, &$total_rows);

if ( !$total_rows[0] ) {

echo "<h1>Error - no rows returned!</h1>";

exit;

}

/*

这段代码是可选择的但将会使返回的结果更清楚,显示一个类似于“总共有15条记录,现在显示的是第4条到第15条结果。”的注释

*/

$begin =($offset+1);

$end = ($begin+($limit-1));

if ($end > $total_rows[0]) {

$end = $total_rows[0];

}

echo "There are <b>$total_rows[0]</b> results.<br>\n";

echo "Now showing results <b>$begin</b> to <b>$end</b>.<br><br>\n";

/*

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章