您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

PHP数据库学习之PDO怎样进行错误处理?

2024/2/20 2:32:43发布19次查看
在之前的文章中给大家带来了《php数据库学习之怎样使用pdo获取查询结果?》,其中详细的介绍了怎样使用pdo获取查询结果的相关知识,本篇我们一起来看一下php中怎样进行pdo的错误处理,希望对大家有帮助!
在之前的学习中我们已经学会出来了通过pdo获取查询结果,那接下来就要学习一下pdo的错误处理, 在 pdo 中有两个获取程序中错误信息的方法,分别是 errorcode() 方法和 errorinfo() 方法。接下来我们就一起来看一看这两种方法的应用吧。
在了解errorcode() 方法和 errorinfo() 方法是怎样进行错误处理的方法之前,我们先来看一下pdo中的错误处理模式。
pdo的错误处理模式
在pdo 中一共提供了三种不同的错误处理模式,它们不仅可以满足不同风格的编程,也可以调整扩展处理错误的方式。那接下来就给大家介绍一下这三种不同的错误处理方式。
pdo::errmode_silent 
pdo::errmode_silent 表示的为默认模式,在这种情况下发生错误的时候 ,pdo会简单的设置一下错误码,不会做其他的任何操作,同时也可以使用pdo::errorcode() 和 pdo::errorinfo() 这两个方法来检查语句和检查数据库对象。
我们需要注意的是,如果错误出现的原因是因为调用语句对象,那么可以调用这个对象的pdostatement::errorcode() 或 pdostatement::errorinfo() 方法。如果错误出现的原因是因为调用数据库对象而产生的,那么可以在数据库对象上调用pdostatement::errorcode() 或 pdostatement::errorinfo() 这两种方法。
pdo::errmode_warning 
pdo::errmode_warning 模式可以设置错误代码,当然了它除了会设置错误码之外,pdo还会发出一条信息,这条信息是很传统的e_warning 信息。在我们需要调试或者测试的时候,不想中断程序但是想弄清楚发生了什么问题的时候。pdo::errmode_warning 这个模式就到了发挥作用的时候了
pdo::errmode_exception 
pdo::errmode_exception 模式也可以设置错误码,初看能够设置错误码之外,pdo还能够抛出一个 pdoexception 异常类并设置它的属性来反射错误码和错误信息。pdo::errmode_exception 模式在调试的时候也是非常有用的,它可以非常快速地指出代码中有问题的潜在区域,因为它会有效地放大脚本中产生错误的点。
pdo 使用 sql-92 sqlstate 来规范错误码字符串,不同 pdo 驱动程序负责将它们的本地代码映射为适当的 sqlstate 代码。pdo::errorcode() 方法返回一个单独的 sqlstate 码。
如果需要更多这个错误的细节信息,pdo 还提供了一个 pdo::errorinfo() 方法来返回一个包含 sqlstate 码、特定驱动错误码以及此驱动的错误字符串的数组。
异常模式另一个非常有用的作用是,相比传统 php 风格的警告,可以更清晰地构建自己的错误处理,而且比起静默模式和显式地检查每种数据库调用的返回值,异常模式需要的代码/嵌套更少。
接下来我们通过示例来看一下创建 pdo 实例,并设置错误模式。示例如下:
<?php $dsn = 'mysql:dbname=test;host=127.0.0.1'; $user = 'root'; $pwd = 'root'; try { $pdo = new pdo($dsn, $user, $pwd); $pdo->setattribute(pdo::attr_errmode, pdo::errmode_exception); } catch (pdoexception $e) { echo 'connection failed: ' . $e->getmessage(); }?>
上述示例中便是通过pdo::setattribute() 方法设置错误模式,除了这种方法设置错误模式外,还可以在创建pdo 实例时设置错误模式
示例如下:
$pdo = new pdo($dsn, $user, $pwd, array(pdo::attr_errmode => pdo::errmode_warning));
以上便是便是pdo的三种错误处理模式,接下来我们看一下pdo::errorcode() 方法。
pdo::errorcode() 方法
pdo::errorcode() 方法大多是用在获取在操作数据库句柄时所发生的错误代码,这些错误代码被称为sqlstate 代码。
pdo::errorcode() 方法可以返回一个 sqlstate,一个由 5 个字母或数字组成的在 ansi sql 标准中定义的标识符。 简单可以理解成,一个 sqlstate 由前面两个字符的类值和后面三个字符的子类值组成。
接下来我们通过示例来看一下通过 pdo 连接数据库,并通过 errorcode() 方法获取错误代码。
示例如下:
<?php $dsn = 'mysql:dbname=test;host=127.0.0.1'; $user = 'root'; $pwd = 'root'; try { $pdo = new pdo($dsn, $user, $pwd); $sql = 'select * from user'; $res = $pdo -> query($sql); echo 'errorcode 为:'.$pdo -> errorcode().'<br>'; foreach ($res as $key => $value) { echo '序号:'.$value['id'].'; 姓名:'.$value['name'].'; 年龄:'.$value['age'].'; 性别:'.$value['sex'].'<br>'; } } catch (pdoexception $e) { echo 'connection failed: ' . $e->getmessage(); }?>
输出结果:
上述结果便是通过 errorcode() 方法获取错误代码。接下来我们看一下最后一种方法pdo::errorinfo() 方法。
pdo::errorinfo() 方法
pdo::errorinfo() 方法与pdo::errorcode() 方法一样都是用于获取操作数据库句柄时所发生的错误信息。
不同的是errorinfo() 方法的返回值为一个数组,它包含了相关的错误信息。
接下来我们通过示例来看一下使用 pdo 中的 query 方法完成数据查询操作,并通过 errorinfo() 方法获取错误信息。
示例如下:
<?php $dsn = 'mysql:dbname=test;host=127.0.0.1'; $user = 'root'; $pwd = 'root'; try { $pdo = new pdo($dsn, $user, $pwd); // $pdo -> setattribute(pdo::attr_errmode, pdo::errmode_exception); $sql = 'select * from userr'; $res = $pdo -> query($sql); echo 'errorinfo 为:<br>'; print_r($pdo -> errorinfo()); } catch (pdoexception $e) { echo 'connection failed: ' . $e->getmessage(); }?>
上述示例中,我们查询了一个不存在的数据库,输出结果:
其中我们需要注意的是:pdo 和 pdostatement 对象中都有 errorcode() 和 errorinfo() 方法,如果没有任何错误,errorcode() 返回的是 00000;否则就会返回一些错误代码。而 errorinfo() 返回的是一个数组,包括 php 定义的错误代码和 mysql 的错误代码及错误信息。
大家如果感兴趣的话,可以点击《php视频教程》进行更多关于php知识的学习。
以上就是php数据库学习之pdo怎样进行错误处理?的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product