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

请注意,PDO 及其驱动程序当前处于“alpha”状态;这就意味着我们会合理保证没有重大缺陷,但是该程序包功能并不完善 - 我们还要添加很多功能。虽然我们鼓励您测试该程序包,但是实在不推荐在现阶段将其用于生产。


Unix/Linux 安装


如果您以前尚未尝试过 PHP 5,则请花一点时间来通读一下“新闻”和各种声明。在 UNIX 计算机上,您可能要安装或升级 libxml2;如果没有 libxml2,“pear”程序包管理工具就无法运行,您安装 PDO 时就会遇到很多困难。获取 PHP 5,并将其编译和安装。确保指定的前缀不是 /usr/local/,这样它就不会与 PHP 4 安装发生冲突了:


% ./configure --prefix=https://www.jb51.net/usr/local/php5 --with-zlib [此处指定其他选项]
% make install

现在您就可以使用“pear”工具获取并安装 PDO 以及用于 PDO 的 Oracle 驱动程序了。因为 PDO 当前标记为 alpha,所以默认情况下 pear 工具不会下载该程序包。在该程序包名称后面添加后缀“-alpha”,通知该 pear 工具可以安装 alpha 版本:


% PATH="/usr/local/php5/bin:$PATH"
% pear install PDO-alpha

您需要告知 PHP 从专用于 PHP 5 的 php.ini 文件加载 PDO 驱动程序。如果您使用的前缀与我使用的一样,PHP 则会在 /usr/local/php5/lib/php.ini 中查找 php.ini 文件。向该文件中添加以下行:

extension=pdo.so

现在您需要获取数据库特定的驱动程序;对于 Oracle,此特定程序称为 PDO_OCI。在 shell 中,键入:

% pear install PDO_OCI-alpha

此驱动程序也需要从 php.ini 文件加载;将下行添加到前面添加的那行之后:

extension=pdo_oci.so

现在检查一下,确保它能够运行:

% php -m

在模块列表中,您应该会看到 PDO 和 PDO_OCI。


防火墙碍事了?


如果您位于防火墙的后面,则在使用 pear 安装程序获取程序包时可能会遇到一些问题。如果发生这种情况,则可以按照下列说明手动下载并安装这些程序包:


% wget
% pear install PDO-0.1.1.tgz


[ 将 extension=pdo.so 添加到 php.ini ]


% wget
% pear install PDO_OCI-0.1.tgz


[ 将 extension=pdo_oci.so 添加到 php.ini ]

在上述两种情况下,都需要首先调用“pear install”(后跟下载的真正程序包);上述示例中的版本号在本文编写之时是最新的,但随着开发的继续进行会发生变化。


Windows 安装


如果您正在运行 Windows,则请按照下列说明执行:

·从 #v5 获取 PHP 5,将其解压缩到 C:\php5。
·从 和 分别获取 PDO 和 PDO_OCI,将其放入 C:\php5\ext。或者,您可以从 PHP 5 下载页上列出的“用于 PHP 5.0.0 的 PECL 模块集合”zip 文件中找到所有这些 PDO 驱动程序,以及所有 PECL 程序包的所有 Windows 版本。
·编辑 C:\php5\php.ini 文件,并添加下列内容:

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();
    }
?>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/d9a1073e13aeb1adc2fb7524998f5b11.html