面向对象的方式,先看看如果连接错误等的处理,PHP中PDO的错误处理,使用面向对象的方式来处理,代码如下:
1 2 3 4 5 6 7 | try {
$db = new PDO('mysql:host=localhost;dbname=test', $user , $pass );
$db = null;
} catch (PDOException $e ) {
print "Error: " . $e ->getMessage() . "<br/>" ;
die ();
}
|
Salin selepas log masuk
这里利用我们PHP 5面向对象的异常处理特征,如果里面有异常的话就初始化调用PDOException来初始化一个异常类.
PDOException异常类的属性结构,代码如下:
1 2 3 4 5 6 | class PDOException extends Exception
{
public $errorInfo = null;
protected $message ;
protected $code ;
}
|
Salin selepas log masuk
这个异常处理类是集成PHP 5内置的异常处理类,我们简单的看一下PHP 5内置的异常处理类结构,实例代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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();
final function getTraceAsString();
}
|
Salin selepas log masuk
相应的,在代码中可以合适的调用 getFile() 和 getLine() 来进行错误定位,更方便的进行调试.
使用面向过程的方法,先看代码:
1 2 3 4 5 6 7 8 9 | $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;
|
Salin selepas log masuk
PDO和PDOStatement对象有errorCode() 和 errorInfo() 方法,如果没有任何错误,errorCode() 返回的是:00000,否则就会返回一些错误代码,errorInfo() 返回的一个数组,包括PHP定义的错误代码和MySQL的错误代码和错误信息,数组结构如下:
1 2 3 4 5 6 | Array
(
[0] => 42S22
[1] => 1054
[2] => Unknown column 'aaa' in 'field list'
)
|
Salin selepas log masuk
每次执行查询以后,errorCode() 的结果都是最新的,所以我们可以很容易自己控制错误信息显示.
教程网址:
欢迎收藏∩_∩但请保留本文链接。