개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.06.12 03:29

PdoPgsql::setNoticeCallback 질문

목록
  • Lambda마법사 오래 전 2025.06.12 03:29
  • 62
    1
제가 PdoPgsql 클래스에서 setNoticeCallback 메소드를 사용하여 SQL 에러 메시지를 처리하려고 하는데,

아래와 같은 코드를 작성했습니다.

php

$db = new PDO('pgsql:host=localhost;dbname=mydb', 'username', 'password');

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);

$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

$db->setNoticeCallback(function($message, $sql, $error_code, $error_string) {

    echo "SQL 에러 메시지: $messagen";

});



하지만, SQL 에러가 발생했을 때, setNoticeCallback 함수가 호출되지 않습니다.

setNoticeCallback 함수를 사용하여 SQL 에러 메시지를 처리하는 방법을 알려주세요.

    댓글목록

    profile_image
    나우호스팅  오래 전



    PDO의 ERRMODE_SILENT 모드에서 SQL 에러 메시지를 처리하기 위해서는 PDO의 ERRMODE_WARNING 모드를 사용해야 합니다.

    ERRMODE_SILENT 모드는 SQL 에러를 무시하고, ERRMODE_WARNING 모드는 SQL 에러를 경고 메시지로 출력합니다.

    따라서, 아래와 같이 코드를 수정하여 setNoticeCallback 함수를 사용하여 SQL 에러 메시지를 처리할 수 있습니다.

    #hostingforum.kr
    php
    
    $db = new PDO('pgsql:host=localhost;dbname=mydb', 'username', 'password');
    
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
    
    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    
    $db->setNoticeCallback(function($message, $sql, $error_code, $error_string) {
    
        echo "SQL 에러 메시지: $messagen";
    
    });
    
    


    또한, PDO의 ERRMODE_EXCEPTION 모드를 사용하여 예외를 발생시켜 SQL 에러 메시지를 처리할 수도 있습니다.

    #hostingforum.kr
    php
    
    $db = new PDO('pgsql:host=localhost;dbname=mydb', 'username', 'password');
    
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    
    $db->setNoticeCallback(function($message, $sql, $error_code, $error_string) {
    
        echo "SQL 에러 메시지: $messagen";
    
    });
    
    

    2025-06-12 03:30

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,371건 / 5 페이지

검색

게시물 검색