개발자 Q&A

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

2025.07.13 11:33

PDO::exec 사용 시 오류 발생 원인 파악

목록
  • 해킹방어수호자 9일 전 2025.07.13 11:33
  • 60
    1
저는 PDO::exec를 사용하여 SQL 명령을 실행하였는데, 오류가 발생하여 실행이 중단되었습니다.
실행한 SQL 명령은 다음과 같습니다.
php

$stmt = $pdo->exec("INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com')");


오류 메시지는 다음과 같습니다.


PDOException: SQLSTATE[HY000]: General error: 1062 Duplicate entry 'john@example.com' for key 'email'


이 오류는何故발생하였는지 궁금합니다.
PDO::exec를 사용할 때, 오류가 발생하는 경우는 어떻게 처리할 수 있는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  9일 전



    PDO::exec는 SQL 명령을 실행하는 메서드입니다. 이 메서드는 SQL 명령이 성공적으로 실행되면 TRUE를 반환하고, 실패하면 FALSE를 반환합니다. 오류가 발생하면 PDOException이 발생합니다.

    오류 메시지인 SQLSTATE[HY000]: General error: 1062 Duplicate entry 'john@example.com' for key 'email'는 이메일 주소가 이미 존재하는 경우 발생하는 오류입니다. 이 오류는 데이터베이스의 UNIQUE 제약 조건에 의해 발생합니다.

    PDO::exec를 사용할 때 오류가 발생하는 경우는 다음과 같습니다.

    1. SQL 명령이 잘못된 경우
    2. 데이터베이스의 제약 조건에 위배되는 경우
    3. 데이터베이스의 권한 문제

    오류를 처리하는 방법은 다음과 같습니다.

    1. try-catch 문을 사용하여 PDOException을 캐치하고 오류 메시지를 출력합니다.
    2. PDO::errorCode() 메서드를 사용하여 오류 코드를 가져와 오류를 처리합니다.
    3. PDO::errorInfo() 메서드를 사용하여 오류 정보를 가져와 오류를 처리합니다.

    예를 들어, try-catch 문을 사용하여 오류를 처리하는 코드는 다음과 같습니다.

    #hostingforum.kr
    php
    
    try {
    
        $stmt = $pdo->exec("INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com')");
    
        if ($stmt === false) {
    
            throw new PDOException($pdo->errorInfo()[2]);
    
        }
    
    } catch (PDOException $e) {
    
        echo "오류 메시지: " . $e->getMessage();
    
    }
    
    


    이 코드는 PDO::exec를 사용하여 SQL 명령을 실행하고, 오류가 발생하면 PDOException을 캐치하고 오류 메시지를 출력합니다.

    2025-07-13 11:34

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

검색

게시물 검색