programing

기본적으로 예외를 허용하도록 PDO 설정

testmans 2023. 10. 22. 19:44
반응형

기본적으로 예외를 허용하도록 PDO 설정

저는 항상 이렇게 PDO를 사용하기 때문에 오류가 발생할 경우 PDO에서 예외가 발생하기를 원합니다.

try {
    $dbh = new PDO("mysql:host=$kdbhost;dbname=$kdbname",$kdbuser,$kdbpw);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // some queries
}
catch (PDOException $e) {
    error_log('PDO Exception: '.$e->getMessage());
    die('PDO says no.');
}

PDO에서 기본적으로 예외를 적용할 수 있도록 편집할 수 있는 구성 파일이 있으면 좋을 것 같습니다. 가능한가요?

이 글을 원하는 이유는 매번 이 줄을 쓸 필요가 없기 때문입니다.

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

업데이트 - 그 이후로 데이터베이스 액세스를 처리하는 라이브러리를 만들었습니다(예외를 저장하도록 PDO 설정 포함).

setAttribute 함수를 생성자에 추가할 수 있습니다.

$pdo = new PDO('mysql:host=localhost;dbname=someDatabase', 'username', 'password', array(
  PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));

그러나 php.ini 파일이나 다른 config 파일에 추가할 방법을 찾을 수 없습니다.

rdlowrey의 말을 인용하자면, 가장 쉬운 방법은 다음과 같습니다.

class MyPDO extends PDO {

    public function __construct($dsn, $username = null, $password = null, array $driver_options = null) {
         parent :: __construct($dsn, $username, $password, $driver_options);
         $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }

}

호출은 단순히 다음의 문제입니다.

$dbh = new MyPDO("mysql:host=$kdbhost;dbname=$kdbname",$kdbuser,$kdbpw);

언급URL : https://stackoverflow.com/questions/8992795/set-pdo-to-throw-exceptions-by-default

반응형