php PDO异常处理详解

5年以前  |  阅读数:490 次  |  编程语言:PHP 

异常处理:

PHP:默认为直接报错

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

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

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

pdo异常处理设置:

设置PDO::ATTR_ERRMODE ,有以下三个值:

PDO::ERRMODE_SILENT: 默认模式,不主动报错,需要主动以 $pdo->errorInfo()的形式获取错误信息。

PDO::ERRMODE_WARNING: 引发 E_WARNING 错误,主动报错

PDO::ERRMODE_EXCEPTION: 主动抛出 exceptions 异常,需要以try{}cath(){}输出错误信息。

实例:

方式一:


    <?php
    //默认是不提示的 需要用 errorCode() errorInfo();
    try{
      $pdo = new PDO("mysql:host=localhost;dbname=jikexueyuan","root","");
      //下面这句是默认设置,有无均可
      $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_SILENT);
    }catch(PDOException $e){
      die("数据库连接失败".$e->getMessage());
    }
    $sql = "insert into stuu values(null,'jike','w',55)";
    $res = $pdo->exec($sql);
    if($res){
      echo "OK";
    }else{
      echo $pdo->errorCode();
      print_r($pdo->errorInfo());
    } 

方式二:


    <?php
    try{
      $pdo = new PDO("mysql:host=localhost;dbname=jikexueyuan","root","");
      //主动以警告的形式报错
      $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
    }catch(PDOException $e){
      die("数据库连接失败".$e->getMessage());
    }
    $sql = "insert into stuu values(null,'jike','w',55)";
    //若有错误直接在浏览器页面中显示错误信息
    $res = $pdo->exec($sql);

方式三:


    <?php
    try{
      $pdo = new PDO("mysql:host=localhost;dbname=jikexueyuan","root","");
      //主动抛出异常
      $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION );
    }catch(PDOException $e){
      die("数据库连接失败".$e->getMessage());
    }
    $sql = "insert into stuu values(null,'jike','w',55)";
    //用try{}catch(){}抓取异常
    try{
      $res = $pdo->exec($sql);
    }catch(PDOException $e){
      echo $e->getMessage();
    }

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用PHP能有所帮助,如果有疑问大家可以留言交流。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
文件下载
获取IMEI
贪吃蛇
双位运算符
Java生成UUID
PHP自定义函数获取搜索引擎来源关键字的方法
年的日历图
发送邮件
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
指定应用ID以获取对应的应用名称
再谈PHP中单双引号的区别详解
Yii2汉字转拼音类的实例代码
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例