php -- PDO异常处理

异常处理:

  PHP:默认为直接报错

  MYSQL:默认为静默模式,错就错,不报错

  PDO:默认为静默模式,错就错,不报错

以前,当PHP碰到错误的时候,会直接报错,错误处理会变得相当麻烦。后来,当错误发生之后,会将错误信息不再直接输出,放到一个类的对象里(PDOException)

要使用PDO异常处理,必须满足两个条件

  1、需要将错误处理模式变成异常模式

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

  2、所有可能出错的语句都必须放到错误捕捉语句块里

  try{

//错误捕捉语句块

//凡是有可能出现错误的语句都放在这

//一旦出错会立即进入catch语句,把所有的错误信息放到PDOexception $e里面

  }catch(PDOExecption $e){

//将错误信息进行处理

  }

 例如:

  try{
        //连接认证
        $pdo = new PDO(‘mysql:host=localhost;dbname=project‘,‘root‘,‘root‘);

        //设置错误处理模式
        $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

        //组织SQL
        $sql= "update pro_student set s_age = 123 where s_id = 20";
        $res = $pdo->exec($sql);
    }catch(PDOException $e){
        //var_dump($e);
        //告诉用户在哪个文件的哪一行出现了什么样的错误
        echo ‘出现异常:<br/>‘;
        echo ‘错误出现的位置:‘ . $e->getFile() . $e->getLine() . ‘<br/>‘;
        echo ‘错误原因:‘  . $e->getMessage();

        var_dump($e->getTrace());//获取完整的错误数据
        exit;
    }

有的时候,如果数据执行没有任何错误,但是就是不符合指定的业务逻辑。一旦出现业务逻辑错误,异常是没有办法捕捉(异常只捕捉语法错误),一般认为的去通过判断语句的执行(结果),主动抛出异常,从而结束错误程序的运行。

语法:throw new PDOException;

     $sql = "select * from pro_student where s_id = 20";
        $stmt = $pdo->query($sql);
        if($stmt->fetchColumn(4) > 100) throw new PDOException; //抛出异常,立马跳转到catch语句块
        else{
            echo ‘没有问题‘;
        }
时间: 2024-08-03 08:21:28

php -- PDO异常处理的相关文章

PDO异常处理

PDO提供了三种处理错误的方式 PDO::ERRMODE_SILENT:静默模式(默认) PDO::ERRMODE_WARNING:警告模式 PDO::ERRMODE_EXCEPTION:异常模式 示例: <?php /** * 利用PDO对象实现异常处理操作 */ echo "<meta charset=utf-8>"; //PDO类的实例化 // 1 设置数据源相关参数 $dbms = 'mysql'; //选择数据库类型 $host = 'localhost';

php核心知识要点

Php:脚本语言,网站建设,服务器端运行 PHP定义:一种服务器端的 HTML 脚本/编程语言,是一种简单的.面向对象的.解释型的.健壮的.安全的.性能非常之高的.独立于架构的.可移植的.动态的脚本语言.是一种广泛用于 Open Source(开放源代码)的尤其适合 Web 开发并可以嵌入 HTML 的多用途脚本语言.它的语法接近 C,Java 和 Perl,而且容易学习.该语言让 Web 开发人员快速的书写动态生成的网页. PHP简介:Rasmus Lerdorf发展历程(1994:1.0个人

PHP核心知识要点II

HTTP协议:超文本传输协议,b/s架构项目遵循的基本协议,浏览器服务器通信的基本原理(请求连接(TCP/IP协议),连接成功,浏览器发送请求,服务器处理请求,浏览器处理结果,关闭连接),HTTP协议两部分(请求,响应),url,特点(支持客户/服务器模式,简单快速[只需请求方法和路径],灵活[任意数据],无连接[每次连接只处理一个请求],无状态[事务处理没有记忆能力]) HTTP请求:四部分(请求行,请求头,空行,请求主体),请求行(请求方式,请求文件,协议/版本),请求头(host,acce

PHP中PDO的配置与说明

住[PDO是啥] PDO是PHP5新加入的一个重大功能,因为在PHP5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接和处理,什么php_mysql.dll.php_pgsql.dll.php_mssql.dll.php_sqlite.dll等等扩展来连接MySQL.PostgreSQL.MSSQLServer.SQLite,同样的,我们必须借助ADOdb.PEAR:B.PHPlib:B之类的数据库抽象类来帮助我们,无比烦琐和低效,毕竟,php代码的效率怎么能够我们直接用C/C+

20150113--PDO增删改查+封装PDO类

回顾 方法重写:是因为对象的访问会先去子类的类空间找,从而形成了对父类的覆盖. 继承链:类只能单继承,但是可以通过继承链来实现多继承 特殊类:final类和抽象类 接口:interface PHP重载:当访问一个权限不够或者不存在的属性或者方法的时候,会自动触发的魔术方法. 属性重载和方法重载 对象的保存和还原:serialize和unserialize(对应的类已经在内存:如果有资源属性必须进行重新加载资源),魔术方法(__sleep和__wakeup) 对象遍历:默认只能遍历public属性

PDO 用法学习

PDO: php data object 数据库访问抽象层 基于驱动: 1.安装扩展 php_pdo.dll 2.安装驱动 php_pdo_mysql.dll linux 编译时参数:--with-pdo=mysql=/usr/local/mysql 三个类: PDO类, 数据库连接有关(连接.执行sql) PDOStatement 准备语句,处理结果集 PDOException 异常处理类 一些常量 相比mysqli方法少,常量多 dsn:data source name(数据源) #部分参数

php PDO mysql写法

php PDO写法连接mysql: 写法一: $db="mysql:host=localhost;dbname=sql" : //连接数据,地址localhost:数据库名称sql: $username="root"; //数据库登录账号: $password="root"; //数据库登录密码: try{ $pdo=new PDO($db,$username,$password);   //连接数据库赋值$pdo; }catch(PDOExce

PDO 中支持三种错误处理模式:

PDO 支持三种错误处理模式: 静默模式,警告模式,异常模式 静默模式是默认的,需要修改的话,通过设置 PDO 对象的属性完成. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT)? $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING)?? $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT)?

pdo设备运营平台系统

系统外部描述(目的 技术原理) 2.1 适用的网络拓扑/应用场景(场景范围) pdo设备在客户端 运营平台在云端 2.2  产品系统适用的网络管理方式 系统服务的设备对象需要可以连接到绿盟云端,需要云端可以访问设备的web界面,并且设备和云端通过A接口连接 2.3  系统硬件关联性 依赖于绿盟云值守运营平台,对硬件平台没有强烈的依赖,后续的日志大数据分析系统对硬件要求较高 3 系统设计 pdo产品运营云端平台  和多个系统之间都有消息交互,具体包括NBOSS 项目管理IT系统 产品反馈支持CAS