개발자 Q&A

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

2025.03.10 11:35

PDOStatement::errorInfo 사용에 대한 질문

목록
  • 화이트해커연구가 12일 전 2025.03.10 11:35
  • 5
    1
제가 PDOStatement::errorInfo 함수를 사용하여 오류 메시지를 출력하려고 하였으나, errorInfo 함수의 반환값을 이해하지 못하고 있습니다. errorInfo 함수의 반환값은 3개의 배열 요소로 구성되는데, 첫 번째 요소는 오류 코드, 두 번째 요소는 오류 메시지, 세 번째 요소는 오류 코드의 세부 정보를 나타냅니다. 하지만 세 번째 요소의 의미를 이해하지 못하고 있습니다. 세 번째 요소의 값이 0일 때와 1일 때의 차이점을 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  12일 전



    PDOStatement::errorInfo 함수의 세 번째 요소는 오류 코드의 세부 정보를 나타내는 것입니다. 이 요소는 오류 코드가 DBMS에 의해 발생한 오류인지, 또는 PHP에서 발생한 오류인지에 따라 다르게 나타납니다.

    - 세 번째 요소의 값이 0인 경우: 오류 코드가 DBMS에 의해 발생한 오류입니다. 예를 들어, MySQL에서 INSERT 문을 실행할 때, 테이블에 이미 동일한 레코드가 존재하는 경우, MySQL은 오류 코드 1062를 반환합니다. 이 경우 세 번째 요소의 값은 0이 됩니다.
    - 세 번째 요소의 값이 1인 경우: 오류 코드가 PHP에서 발생한 오류입니다. 예를 들어, PDOStatement::execute 함수를 호출할 때, 오류가 발생한 경우, PHP는 오류 코드를 반환합니다. 이 경우 세 번째 요소의 값은 1이 됩니다.

    예를 들어, 다음과 같은 코드를 실행할 경우:

    #hostingforum.kr
    php
    
    $stmt = $pdo->prepare('INSERT INTO users (name, email) VALUES (:name, :email)');
    
    $stmt->execute(['name' => 'John Doe', 'email' => 'john@example.com']);
    
    


    이 코드를 실행할 때, 이미 동일한 레코드가 존재하는 경우, MySQL은 오류 코드 1062를 반환합니다. 이 경우 세 번째 요소의 값은 0이 됩니다.

    #hostingforum.kr
    php
    
    errorInfo 함수의 반환값은 다음과 같습니다.
    
    array(0 => 1062, 1 => 'Duplicate entry '' for key '' , 2 => 0)
    
    


    반면에, PDOStatement::execute 함수를 호출할 때 오류가 발생한 경우, PHP는 오류 코드를 반환합니다. 이 경우 세 번째 요소의 값은 1이 됩니다.

    #hostingforum.kr
    php
    
    $stmt = $pdo->prepare('INSERT INTO users (name, email) VALUES (:name, :email)');
    
    $stmt->execute(['name' => 'John Doe', 'email' => 'john@example.com']);
    
    


    이 코드를 실행할 때, 오류가 발생한 경우, PHP는 오류 코드를 반환합니다. 이 경우 세 번째 요소의 값은 1이 됩니다.

    #hostingforum.kr
    php
    
    errorInfo 함수의 반환값은 다음과 같습니다.
    
    array(0 => 23000, 1 => 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' for key ''', 2 => 1)
    
    


    따라서, 세 번째 요소의 값이 0인 경우 오류 코드가 DBMS에 의해 발생한 오류이고, 세 번째 요소의 값이 1인 경우 오류 코드가 PHP에서 발생한 오류입니다.

    2025-03-10 11:36

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

검색

게시물 검색