PDO 中相关的错误处理

面向对象的方式
先看看如果连接错误等的处理,PHP中PDO的错误处理,使用面向对象的方式来处理:

<?php教程
try {
 $db = new PDO('mysql教程:host=localhost;dbname=test', $user, $pass);
 $db = null;
} catch (PDOException $e) {
 print "Error: " . $e->getMessage() . "<br/>";
 die();
}
?>
这里利用我们PHP 5面向对象的异常处理特征,如果里面有异常的话就初始化调用PDOException来初始化一个异常类。
PDOException异常类的属性结构:

<?php
class PDOException extends Exception
{
 public $errorInfo = null; // 错误信息,可以调用 PDO::errorInfo() 或 PDOStatement::errorInfo()来访问
 protected $message; // 异常信息,可以试用 Exception::getMessage() 来访问
 protected $code; // SQL状态错误代码,可以使用 Exception::getCode() 来访问
}
?>
这个异常处理类是集成PHP 5内置的异常处理类,我们简单的看一下PHP 5内置的异常处理类结构:

<?php
class Exception
{
 // 属性
 protected $message = 'Unknown exception'; // 异常信息
 protected $code = 0; // 用户自定义异常代码
 protected $file; // 发生异常的文件名
 protected $line; // 发生异常的代码行号

 // 方法
 final function getMessage(); // 返回异常信息
 final function getCode(); // 返回异常代码
 final function getFile(); // 返回发生异常的文件名
 final function getLine(); // 返回发生异常的代码行号
 final function getTrace(); // backtrace() 数组
 final function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息
}
?>
相应的,在代码中可以合适的调用 getFile() 和 getLine() 来进行错误定位,更方便的进行调试。

使用面向过程的方法
先看代码:

<?
$db = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$rs = $db->query("SELECT aa,bb,cc FROM foo");
if ($db->errorCode() != '00000'){
 print_r($db->errorInfo());
 exit;
}
$arr = $rs->fetchAll();
print_r($arr);
$db = null;
?>
PDO和PDOStatement对象有errorCode() 和 errorInfo() 方法,如果没有任何错误, errorCode() 返回的是: 00000 ,否则就会返回一些错误代码。errorInfo() 返回的一个数组,包括PHP定义的错误代码和MySQL的错误代码和错误信息,数组结构如下:

Array
(
 [0] => 42S22
 [1] => 1054
 [2] => Unknown column 'aaa' in 'field list'
)
每次执行查询以后,errorCode() 的结果都是最新的,所以我们可以很容易自己控制错误信息显示

时间: 2024-10-13 16:44:38

PDO 中相关的错误处理的相关文章

《PHP精粹:编写高效PHP代码》——2.6节处理PDO中的错误

2.5 处理PDO中的错误 当你刚开始使用PDO时,它的某个方面是令人惊讶或让人沮丧的(视你的态度而定),即当它出现问题时,并不总是显而易见的.当我们第一次连接到数据库时,就会看到一个失败的连接会导致抛出一个异常.这里有一个提醒的代码: 一般来说,当某些引人注目的事情发生时PDO会抛出异常,但是如果你的查询由于某些原因而未能运行时,你也不必为此大惊小怪.这表明我们要仔细检查一切是否按照我们所预期的那样运行. 让我们复习一下迄今为止所学到的相关内容,看看我们如何对出现的问题进行识别和反应. 2.5

JQuery ajax中error返回错误及一直返回error的解答_AJAX相关

进入百度搜索此问题,发现有人这么说了一句 Jquery中的Ajax的async默认是true(异步请求),如果想一个Ajax执行完后再执行另一个Ajax, 需要把async=false就可以了 于时我在ajax中进行了处理 async: false,结果发现提交正常的数据返回是正常的没有错误.  代码如下  $.ajax({ type: "POST", async: false, url:urllink, data:data, dataType:"html", su

100个开源C/C++项目中的bugs(二)未定义行为、与运算优先级相关的错误

from:http://www.oschina.net/question/1579_45444 未定义行为 首先,一小段理论知识 未定义行为是某些编程语言的特性(尤其在C和C++中),在某些情形下产生的结果將依赖于编译器的实现或指定的优化选项.换句话说,规范并没有定义 某情况下该语言的行为,仅仅是说:"在 A 条件下,B 结果是未定义的".在这种情况下错误在你的程序中被认为是允许的,甚至在一些特别的编译器中执行良好.这样的程序不能跨平台,并有可能在不同的电脑,不同 的操作系统甚至不同的

避免Java EE项目评估中的常见错误

错误|项目 摘要: 软件开发项目评估是软件开发周期中关键又具备挑战性的一步,它是计划,进度,人员以及其他相关步骤的基础.项目低估会带来紧张的进度,高度压力的工作环境,未可预料的资源紧缺,低质量,项目实施延误等风险, 可以最大限度的破坏客户的生意以及公司的信誉:而另一方面,带有过多不合理泡沫的评估也会导致无效率的资源浪费以及引起客户和公司之间的不信任.评估企业Java项目因为技术的更新成了一个难题,本文通过几个方面透视提供了评估企业Java项目时应该考虑的问题 假如你是一个重要软件项目的项目经理,

ASP开发中遇到的错误信息中文说明大全

错误|中文 如果你搞过ASP的开发,你就会为ASP中没有好的完整的调试环境而头疼不己.我收集了网上相关所有信息提示,想给它做成单机的ASP开发错误提示软件中的数据库,但是我发现应该还有些是我所不清楚或说是了解的.所以放在这里,请知道的朋友再次提出你的观点或说更详细的信息,我将非常感激!如果有好的建议,如果软件出来后,我将首先免费送给您尝试使用! 再次希望看到这个文章的朋友们,能够支持和鼓励我做这个东西!(反正我觉得做这样东西的好像就没有啊),请大家指出问题并且补充!!!呵!!!!!-------

“/”应用程序中的服务器错误。索引超出了数组界限。

问题描述 "/"应用程序中的服务器错误.索引超出了数组界限. "/"应用程序中的服务器错误. 索引超出了数组界限. 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.IndexOutOfRangeException: 索引超出了数组界限. 源错误: [没有相关的源行] 源文件: c:WINDOWSMicrosoft.NETFrameworkv2.0.50727

iis7.0-IIS7 发布网站应用程序中的服务器错误问题 请高手指教

问题描述 IIS7 发布网站应用程序中的服务器错误问题 请高手指教 将我的MVC4程序发布到本机IIS7上报错: 确认2点: 1.发布的程序不存在问题,在服务器上可以正常访问,服务器系统是Windows2008 64位系统,我本地是win7 64位系统. 2.有将.net framework注册到IIS上 网上有讲到的 我基本都有设置修改到,但是问题依然在,求教... 解决方案 不一定,也许是数据库连接.文件系统权限等问题.你能看到那个页,说明asp.net已经在工作了. 解决方案二: 信息有点

“/WebApplication2”应用程序中的服务器错误!怎么回事?

问题描述 "/WebApplication2"应用程序中的服务器错误.--------------------------------------------------------------------------------编译错误说明:在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地修改源代码.编译器错误信息:CS0016:未能写入输出文件"c:WINDOWSMicrosoft.NETFrameworkv1.1.4322Tempora

总结Node.js中的一些错误类型_node.js

前言 Node.js应用中可能会发生多种类型的错误.如:当出现语法错误或运行时错误时,会触发JavaScript错误:当试图试访问一个不存在或没有访问的文件时,会触发系统错误:除JavaScript错误和系统错误错误外,用户还可以自定义错误. 1. 错误分类 Node.js是一个JavaScript运行时平台,其应用发生错误都是一个Error实例或Error子类的实例. 在Node.js应用中,可能发生的错误有以下4类:      1.标准JavaScript错误,如:           <E