
PdoPgsql::setNoticeCallback를 사용하여 PostgreSQL의 오류 메시지를 캐치하고 싶다면, PHP의 기본 오류 메시지 출력을 중단시키지 않도록 설정해야 합니다.
PHP의 기본 오류 메시지 출력을 중단시키지 않도록 설정하려면, PdoPgsql::setNoticeCallback에 콜백 함수를 등록하는 대신, PDO의 errorInfo 메소드를 사용하여 오류 메시지를 캐치하는 방법을 사용할 수 있습니다.
예를 들어, 다음과 같이 코드를 작성할 수 있습니다.
#hostingforum.kr
php
$pdo = new PDO('pgsql:host=localhost;dbname=mydb', 'myuser', 'mypassword');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try {
// SQL 명령어를 실행합니다.
$stmt = $pdo->prepare('SELECT * FROM non_existent_table');
$stmt->execute();
} catch (PDOException $e) {
// 오류 메시지를 캐치합니다.
echo '오류 메시지: ' . $e->getMessage() . "n";
echo '오류 코드: ' . $e->getCode() . "n";
}
또는, PdoPgsql::setNoticeCallback를 사용하여 오류 메시지를 캐치하는 방법을 사용할 수 있습니다.
#hostingforum.kr
php
function noticeCallback($message) {
// 오류 메시지를 캐치합니다.
echo '오류 메시지: ' . $message . "n";
}
$pdo = new PDO('pgsql:host=localhost;dbname=mydb', 'myuser', 'mypassword');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
$pdo->setAttribute(PDO::ATTR_NOTIFY, PDO::PMD_NOTICES);
$pdo->setNoticeCallback('noticeCallback');
이러한 방법을 사용하면, PHP의 기본 오류 메시지 출력이 중단되지 않으면서도 PostgreSQL의 오류 메시지를 캐치할 수 있습니다.
2025-05-27 17:55