所有PDO查询都有一个全局try {} catch {}

时间:2014-07-10 22:39:16

标签: php mysql pdo error-handling try-catch

我很少在失败时使用唯一错误消息进行数据库查询

我经常使用短标准消息,例如“数据库错误/失败。请联系网站管理员”或类似的东西。或者让它自动给我发电子邮件

我正在寻找一种在PDO中为全局查询设置try {}并捕获{}的方法。所以我不必一遍又一遍地写相同的

这可能吗?也许把它包装成一个小班?

1 个答案:

答案 0 :(得分:0)

在井设计应用程序中,您将使用设计模式进行编写。例如,您可以使用MVC方法实现此目的:

<强>模型

class Students {

    private pdo;

    function __construct($pdo){
    //do something
    $this->pdo = $pdo;
    }

    function get_all_students(){
        $stmt = $this->pdo->prepare("SELECT * FROM Students");
        $stmt->execute();
        $result = $stmt->fetchAll();

        return $result;
    }

}

<强>控制器

class StudentsController{

    function GetStudentAction(){
        //here you create an instance of that model
        $students_model = new Students();
        $students = $students_model->get_all_students();
        return $students;
    }

}

<强>使用

<?php
include 'Students.php';
include 'StudentsController.php';

try {
     $students = new StudentController();
     $all_students = $students->GetStudentAction();

    //then you have more other models 
    //for example:
     $professors = new ProfessorsController();
     $math_professors = $professors->GetMathProfessorsAction();
}
catch( PDOException $Exception ) {
    //do something with the Exception
    echo( $Exception->getMessage( ) , $Exception->getCode( ) );
}

?>