2011-05-14 3 views
6

PDO 클래스에서 사용할 수있는 DataBase 드라이버에서 반환 한 오류 문을 정확히 처리 할 수 ​​있는지 알고 싶습니다.DB가 오류 문을 반환 할 때 PDOException 처리

예를 들어 UNIQUE Fields를 연구 사례로 보겠습니다.

적어도 PDO의 디버그 모드가 활성화되어있을 때 데이터베이스의 UNIQUE 필드에 복제 된 것을 추가하려고 할 때 PDOException을 수신합니다.

그리고 나는 이것을 처리하는 올바른 방법이 무엇인지 알고 싶습니다. 나는 그것에 대해 검색과 나는이있어 :

try { 

    // PDO::prepare(), PDOStatement::execute e etc. 

} catch(PDOException $e) { 

    if($e -> getCode() == 23000) { 
     // Do something 
    } 
} 

을하지만 프로그래머로 생각하고, 맞습니다 그리고 만약 잘 모르겠어요,이 정말 좋습니다? 내 말은, 오류 코드에 의지합니까?

PDO는 여러 드라이버를 허용하며 모두 동일한 오류 코드를 공유합니까?

물론 이것은 유일한 경우는 아닙니다. 다른 여러 오류 코드가 있습니다. 맞습니까? 이 "기법"은 모든 상황에서 사용될 수 있습니까?

답변

3

http://php.net/manual/en/class.pdoexception.php을보고 난 후에 $e->getMessage()에 의존해야 할 수도 있다는 느낌이 들었습니다.

provided 중 하나를 통해 읽는 중 메시지에서 올바른 오류 코드를 추출해야 할 수 있습니다.

PDO는 상당히 이상한 방식으로 프로그래밍 된 것 같습니다! 그러나 여러 데이터베이스 유형을 다룰 때 여전히 매우 귀중합니다!

+0

나는 그것이 현재 존재하는지 아닌지를 확인하는 것이 더 안전하다고 생각한다. –

관련 문제