快速业务通道

PHP 5 数据对象 (PDO) 抽象层与 Oracle

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-25
文件,并添加下列内容:

extension=php_pdo.dll
extension=php_pdo_oci.dll

编辑 php.ini 文件时,有一点很重要,即要在任何其他 PDO 驱动程序之前先加载 PDO 扩展,否则就不能正确初始化(在这种情况下会出错)。

如果在 Windows 目录中有一个 PHP 4 的全局 php.ini 文件,则可能会遇到问题。最好的解决方法是,移动该 php.ini 文件,使其与 PHP 4 SAPI 位于相同的文件夹中,以隔离 PHP 4 安装;例如,将其移动到与 php4apache.dll 相同的文件夹中。请注意,PHP 5 程序中并非所有文档都是最新的;推荐的安装过程如上面所述 - 如 install.txt 文件所声明的,请勿将任何 DLL 复制到 windows 文件夹或 system 文件夹中 - 任何内容都是自包含的。如果您运行的是 apache,并且遇到无法加载 DLL 的错误,则检查一下是否将 C:\php5 添加到了 PATH 中。另外,还要注意 PHP 5 的 CGI 版本现在的名称为 php-cgi.exe。


连接 PDO


首先创建 PDO 类的一个实例,将其用作数据库句柄。使用哪个基础驱动程序并不重要;您总要使用 PDO 类名。构造函数的第一个参数为数据源名称 (DSN),第二个参数为用户名,第三个参数为该用户名的口令。DSN 的 PDO 命名惯例为 PDO 驱动程序的名称,后面一个冒号,再后面是可选的驱动程序特定的信息。在我们的示例中,会加载 OCI 驱动程序但不指定任何其他信息;这样会使用默认的数据库。对于其他驱动程序,如 ODBC 驱动程序,第一个冒号后面的所有内容都将被用作 ODBC DSN。MySQL 驱动程序会同样以不同的方式解释它的 DSN。

如果无法加载该驱动程序,或者发生了连接失败,则会抛出一个 PDOException,以便您可以决定如何最好地处理该故障。


<?php
try {
$dbh = new PDO("OCI:", "scott", "tiger");
} catch (PDOException $e) {
echo "Failed to obtain database handle " .$e->getMessage();
    }
?>


在连接字符串中,您可以指定两个可选参数;第一个是数据库名称,第二个是字符集;这些参数与可选的第三个和第四个参数相对应,后两个参数您可能在 oci8 扩展函数 ociconnect() 或 ociplogon() 中使用过。要使用特定的字符集连接一个特定的数据库,则可以执行下列操作:


<?php
try {
$dbh = new PDO("OCI:dbname=accounts;charset=UTF-8", "scott", "tiger");
} catch (PDOException $e) {
echo "Failed to obtain database handle " .$e->getMessage();
    }
?>


省略 try..catch 控制结构并无裨益。如果在应用程序的较高级别没有定义异常处理,则在无法建立数据库连接的情况下,该脚本会终止。


连接管理


目前,PDO 完全没有执行自己的任何连接管理,因此每个“新 PDO”调用都会建立一个新的数据库连接。该连接在 $dbh 变量越界时,或者当您为其指定 NULL 值时会被释放。


<?php
try {
$dbh = new PDO("OCI:dbname=accounts;charset=UTF-8", "scott", "tiger");
} catch (PDOException $e) {
echo "Failed to obtain database handle " .$e->getMessage();
exit;
    }
// 在此处对数据库执行一些操作
    // ...
   
// 现在完成,释放该连接
$dbh = null;
?>


计划在不久的将来为 PDO 增加连接缓存功能;就当前的 oci8 扩展而言,会重用与现有服务器的连接,并且在这些连接中,还会重用闲置的登录。当在缓存连接模式中运行时,如上面的代码段所示释放 $dbh 时会将该登录标记为可由其他连接重用。

如果您使用 ODBC 驱动程序访问 Oracle,则可能会很高兴地注意到,默认情况下 PDO_ODBC 驱动程序支持 ODBC 连接池。


使用 PDO


了解一个编程 API 的最好方式就是使用它,因此我们来看一下附带的这个演示,以了解如何进

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号