PHP PDO 错误与错误处理

PDO::ERRMODE_SILENT

此为默认模式。 PDO 将只简单地设置错误码,可使用PDO::errorCode()和PDO::errorInfo()方法来检查语句和数据库对象。如果错误是由于对语句对象的调用而产生的,那么可以调用那个对象的PDOStatement::errorCode()或 PDOStatement::errorInfo()方法。如果错误是由于调用数据库对象而产生的,那么可以在数据库对象上调用上述两个方法。

PDO::ERRMODE_WARNING

除设置错误码之外,PDO还将发出一条传统的E_WARNING信息。如果只是想看看发生了什么问题且不中断应用程序的流程,那么此设置在调试/测试期间非常有用。

PDO::ERRMODE_EXCEPTION

除设置错误码之外,PDO还将抛出一个PDOException异常类并设置它的属性来反射错误码和错误信息。此设置在调试期间也非常有用,因为它会有效地放大脚本中产生错误的点,从而可以非常快速地指出代码中有问题的潜在区域(记住:如果异常导致脚本终止,则事务被自动回滚)。

异常模式另一个非常有用的是,相比传统 PHP风格的警告,可以更清晰地构建自己的错误处理,而且比起静默模式和显式地检查每种数据库调用的返回值,异常模式需要的代码/嵌套更少。

创建 PDO 实例并设置错误模式

$dsn = 'mysql:dbname=testdb;host=127.0.0.1';

$user = 'dbuser';

$password = 'dbpass';

try {

$dbh = new PDO($dsn, $user, $password);

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch (PDOException $e) {

echo 'Connection failed: ' . $e->getMessage();

}

?>

注意:不管当前是否设置了PDO::ATTR_ERRMODE,如果连接失败,PDO::__construct()将总是抛出一个 PDOException 异常。未捕获异常是致命的。

创建 PDO 实例并在构造函数中设置错误模式

$dsn = 'mysql:dbname=test;host=127.0.0.1';

$user = 'googleguy';

$password = 'googleguy';

/*

使用 try/catch 围绕构造函数仍然有效,即使设置了 ERRMODE 为 WARNING,

因为如果连接失败,PDO::__construct 将总是抛出一个 PDOException 异常。

*/

try {

$dbh = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));

} catch (PDOException $e) {

echo 'Connection failed: ' . $e->getMessage();

exit;

}

// 这里将导致 PDO 抛出一个 E_WARNING 级别的错误,而不是 一个异常 (当数据表不存在时)

$dbh->query("SELECT wrongcolumn FROM wrongtable");

?>

以上例程会输出:

Warning: PDO::query(): SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test.wrongtable' doesn't exist in

/tmp/pdo_test.php on line 18

add a note add a note

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

php pdo 错误信息,PHP的PDO错误与错误处理相关推荐

  1. ajax 错误信息error,jquery ajax的error错误信息

    项目开发中ajax的异常处理起来算是比较头疼的,因为是异步请求,所以即使ajax异常程序依然会继续执行,导致找ajax的异常比较麻烦. 今天处理ajax异常时搜到一篇文章,提到error可以返回aja ...

  2. php 异常错误信息用处,关于PHP中异常错误的处理详细介绍

    1. 错误报告级别 error_reporting()error_reporting(int $level); PHP 5.4 及以上 E_ALL 包含了 E_STRICT. PHP Manual 所 ...

  3. 服务器mvc提示404错误信息,解决Spring MVC提示404错误找不到JSP问题

    Spring mvc开发时当遇到404错误是一个比较蛋疼的问题,因为一般不会到达后台和Controller,所以在日志中不会有信息.这时只能通过经验解决了. 一般情况都是Url的Mapping没有找到 ...

  4. mvc怎么请求服务器错误信息,asp.net-mvc – IIS显示服务器错误而不是自定义错误...

    我正在使用MVC 5,我正在使用自定义视图处理我的错误,例如(404,403 --等) 它在我的本地IIS上工作正常,但是当我在登台服务器上发布时,它显示有关这些错误代码的IIS服务器错误消息. 它显 ...

  5. c语言提示错误信息,【资料】C语言错误信息中文解释

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 1.#operator not followed by macro argument name "#"运算符后无宏变元名.在宏定义中, ...

  6. c语言编译错误信息详细解释,C语言编译错误信息说明大全

    C说明 #operator not followed by maco argument name #运算符后没跟宏变元名 Ambiguous operators need parentheses 不明 ...

  7. java post请求返回500错误信息_Retrofit API Post call 返回错误 500,适用于 Postman

    我正在尝试使用改进 2 使用其他 API,我已经能够使用一些端点,但注册端点不断返回 http 500 错误代码,但在使用邮递员测试时工作正常. @POST("auth/signup/&qu ...

  8. 【连载】优秀程序员的45个习惯之37——提供有用的错误信息

    提供有用的错误信息 --  高效程序员的 45 个习惯之习惯37 "不要吓着用户,吓程序员也不行.要提供给他们干净整洁的错误信息.要使用类似'用户错误.替换,然后继续.'这样让人舒服的词句. ...

  9. 项目上线,php的错误信息必须不让其在页面中显示给客户,

    对于PHP开发者来 说,一旦某个产品投入使用,应该立即将 display_errors选项关闭,以免因为这些错误所透露的路径.数据库连接.数据表等信息而遭到黑客攻击.但是,任何一个产品在投入使用后,都 ...

最新文章

  1. 仟叶学校:武汉老师最燃演讲“人生很贵,请别浪费”
  2. UGUI 自动布局的重叠BUG
  3. 计组-CISC和RISC的基本概念
  4. php包括web前端,web前端包括什么技术?
  5. 如何给SAP Cloud Connector Region列表中添加新的Region
  6. docker开放的端口_docker-5-解决宿主机没有开放81端口却可以直接访问docker启动的81端口nginx容器的问题...
  7. 价格穿越,跟 普通的大于 小于是有差别的
  8. HTML中的特殊字符
  9. JAVA:一个简易的文本编辑器
  10. linux下安装卸载永中office步骤,永中集成Office For Linux安装图文指南及简介
  11. JSP基础教程之表单编辑
  12. 学生用计算机的使用技巧,选学生笔记本电脑的小窍门
  13. Axure R8学习记录
  14. cocos 随机变色的拖尾
  15. Vue中如何根据svg内容显示图片
  16. 2022年河南省焊工高级技师理论知识模拟试题及答案
  17. 黑马程序员顺义校区php_PHP面向对象开发视频教程[黑马程序员]
  18. C++头文件和源文件的编译过程
  19. 可能是全网最详细的python安装教程(windows),小白建议收藏
  20. iphone手机safari浏览器访问网站滚动条不显示问题解决办法

热门文章

  1. android fragment学习6--FragmentTabHost底部布局
  2. 基于JAVA+Servlet+JSP+MYSQL的失物招领系统
  3. 基于JAVA+SpringMVC+Mybatis+MYSQL的在线学习管理系统源码
  4. java 窗口鼠标句柄_c#获取窗体句柄模拟鼠标点击
  5. XML DOM Object Model in .NET [3/3] - Samples
  6. day55 linux 基础以及系统优化
  7. RS-232 vs. TTL Serial Communication(转载)
  8. 再看产业地图及《中国2010-2011产业地图》书评
  9. FreeBSD重新加载rc.conf
  10. mysql 产品表 myisam好还是innodb好_mysql两种表存储结构myisam和innodb的性能比较测试...