Home > php教程 > php手册 > PDO 中相关的错误处理

PDO 中相关的错误处理

WBOY
Release: 2016-05-26 15:22:07
Original
1088 people have browsed it

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

try { 
 $db = new PDO('mysql:host=localhost;dbname=test', $user, $pass); 
 $db = null; 
} catch (PDOException $e) { 
 print "Error: " . $e->getMessage() . "<br/>"; 
 die(); 
}
Copy after login

这里利用我们PHP 5面向对象的异常处理特征,如果里面有异常的话就初始化调用PDOException来初始化一个异常类.

PDOException异常类的属性结构,代码如下:

class PDOException extends Exception 
{ 
 public $errorInfo = null; // 错误信息,可以调用 PDO::errorInfo() 或 PDOStatement::errorInfo()来访问 
 protected $message; // 异常信息,可以试用 Exception::getMessage() 来访问 
 protected $code; // SQL状态错误代码,可以使用 Exception::getCode() 来访问 
}
Copy after login

这个异常处理类是集成PHP 5内置的异常处理类,我们简单的看一下PHP 5内置的异常处理类结构,实例代码如下:

class Exception 
{ 
 // 属性 
 protected $message = &#39;Unknown exception&#39;; // 异常信息 
 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() 信息 
}
Copy after login

相应的,在代码中可以合适的调用 getFile() 和 getLine() 来进行错误定位,更方便的进行调试.

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

$db = new PDO(&#39;mysql:host=localhost;dbname=test&#39;, $user, $pass); 
$rs = $db->query("SELECT aa,bb,cc FROM foo"); 
if ($db->errorCode() != &#39;00000&#39;){ 
 print_r($db->errorInfo()); 
 exit; 
} 
$arr = $rs->fetchAll(); 
print_r($arr); 
$db = null;
Copy after login

PDO和PDOStatement对象有errorCode() 和 errorInfo() 方法,如果没有任何错误,errorCode() 返回的是:00000,否则就会返回一些错误代码,errorInfo() 返回的一个数组,包括PHP定义的错误代码和MySQL的错误代码和错误信息,数组结构如下:

Array 
( 
 [0] => 42S22 
 [1] => 1054 
 [2] => Unknown column &#39;aaa&#39; in &#39;field list&#39; 
)
Copy after login

每次执行查询以后,errorCode() 的结果都是最新的,所以我们可以很容易自己控制错误信息显示.


教程网址:

欢迎收藏∩_∩但请保留本文链接。

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template