PHP 5 数据对象 (PDO) 抽象层与 Oracle
try {
$dbh->exec($sql); } catch (PDOException $e) { // 显示警告消息 print $e->getMessage(); $info = $e->errorInfo; // $info[0] == $e->code; unified error code // $info[1] 是驱动程序特定的错误代码 // $info[2] 是驱动程序特定的错误字符串 } 请注意,与警告或异常相比,静默模式针对运行时错误使用的资源最少,但是为了获得该速度,您牺牲了一些简单性,而变得有一点复杂。 统一错误代码表当前包括下列常量: PDO_ERR_NONE、PDO_ERR_CANT_MAP、PDO_ERR_SYNTAX、PDO_ERR_CONSTRAINT、PDO_ERR_NOT_FOUND、PDO_ERR_ALREADY_EXISTS、PDO_ERR_NOT_IMPLEMENTED、PDO_ERR_MISMATCH、PDO_ERR_TRUNCATED、PDO_ERR_DISCONNECTED。 这些常量所代表的意思字面即可推知,但是 PDO_ERR_CANT_MAP 代码除外;这是一个 PDO 特定的代码,也就是说它无法将驱动程序特定的代码映射到统一的错误代码,因此您应该查询 errorInfo() 方法返回的驱动程序特定代码来获得更多信息。 数据类型 PDO 在某种程度上类型不可知,因此它喜欢将数据表示为字符串,而不是将其转换为整数或双精度类型。此时您可能对此有些迷惑,但是原因非常简单:字符串类型是最精确的类型,在 PHP 中具有最广泛的应用范围;过早地将数据转换为整数或者双精度类型可能会导致截断或舍入错误。通过将数据以字符串抽出,PDO 为您提供了一些脚本控制,您可以使用普通的 PHP 类型转换工具(如数学运算过程中的转换和隐式)来控制怎么样进行转换以及何时进行转换。 NULL 如果结果集中的某列包含一个 NULL 值,PDO 则会将其映射为 PHP null 值。Oracle 在将数据返回 PDO 时会将空字符串转换为 NULL,但是 PHP 支持的任何其他数据库都不会这样处理,从而导致了可移植性问题。PDO 提供了一个驱动程序级属性 PDO_ATTR_ORACLE_NULLS,该属性会为其他数据驱动程序模拟此行为: $dbh = new PDO('OCI:', 'scott', 'tiger');$dbh->setAttribute(PDO_ATTR_ORACLE_NULLS, true); // 现在从此 $dbh 打开的任何语句中的 // 空字符串都将被转换为 NULL POD 的现状和未来 PDO 现在仍相当不成熟,但是会快速成熟起来。在编写本文之时,我在本文中提到的任何内容都能够通过 PDO_OCI 驱动程序适用于 Oracle 8 或更高版本(在 Oracle 8.0 和 9.2 上测试过)。 已经计划增加以下主要特性,在不久将可以使用:
我们需要您的反馈 如果您试用了 PDO,并且发现了问题,请务必使用我们的错误跟踪软件将其报告给我们。如果您使用的是 Oracle 驱动程序,则请使用此页: http://pecl.php.net/bugs/report.php?package=PDO_OCI如果您使用的是其他驱动程序,则请用其名称替换该 URL 中 PDO_OCI。 如果您使用 PDO 时遇到问题,或者针对某些特性存在疑问,或者具有特性请求,请联系 pecl-dev@lists.php.net。如果您愿意,当然还可以直接联系我 (wez@php.net),但是请注意,我每天都会收到大量有关 PHP 的电子邮件;您可能会发现如果首先与前面的邮件列表联系会更快得到答复。 Wez Furlong 是 Brain Room Ltd. 的技术总监,他在该公司不但使用 PHP 用于 Web 开发,还将其用作 Linux 和 Windows 应用程序和系统的嵌入式脚本引擎。Wez 是 PHP 的核心开发人员,经常向 SQLite、COM/.Net、ActivePHP、mailparse 和 Streams API 等投稿,他是 PECL 即 PHP 扩展社区库的“头儿”。他的咨询公司的网页为 http://www.thebrainroom.net。 上一篇:可扩展 可伸缩的 Oracle 与 PHP 下一篇:来自PHP.NET的入门教程 更多相关文章
|
推荐文章
精彩文章
|