-
- try {
- $db = new pdo('mysql:host=localhost;dbname=test', $user, $pass );
- $db = null;
- } catch (pdoException $e) {
- "error: " . "
"; > die();
- }
- ?>
-
코드 복사
여기에서는 PHP 5의 객체 지향 예외 처리 기능을 사용합니다. 예외가 있는 경우, pdoException을 호출하여 예외 클래스를 초기화하십시오.
pdoException 예외 클래스의 속성 구조:
- class pdoException 확장 예외
- {
- public $errorinfo = null; // 오류 메시지, 호출 가능 pdo ::errorinfo() 또는 pdostatement::errorinfo()
- protected $message; // 예외 정보,
- protected $code에 액세스하려면 예외::getmessage()를 시도할 수 있습니다. 코드,
- }
- ?>
-
코드 복사
에 액세스하려면 예외::getcode()를 사용할 수 있습니다. 이 예외 처리 클래스는 PHP 5에는 예외 처리 클래스가 내장되어 있습니다.
PHP 5 내장 예외 처리 클래스 구조:
- 클래스 예외
- {
- // 속성
- protected $message = '알 수 없는 예외'; / 예외 정보
- protected $code = 0; // 사용자 정의 예외 코드
- protected $file; // 예외가 발생한 파일 이름
- protected $line;
- // 메소드
- final function getmessage(); // 예외 정보 반환
- final function getcode(); // 예외 코드 반환
- final function getfile(); 예외가 발생했습니다.
- final function getline(); // 예외가 발생한 코드 줄 번호를 반환합니다.
- final function gettrace(); // backtrace() array
- final function gettraceasstring(); gettrace() 정보를 문자열로
- }
- ?>
-
코드 복사
따라서 getfile() 및 getline(은 다음에서 적절하게 호출될 수 있습니다. 코드)를 사용하여 오류를 찾고 디버깅을 더욱 편리하게 만듭니다.
프로세스 중심 접근 방식 사용
암호:
-
- $db = new pdo('mysql:host=localhost;dbname=test', $user, $pass)
- $rs = $db->query("foo에서 aa,bb,cc 선택")
- if ($db->errorcode() != '00000'){
- print_r($ db->errorinfo());
- 종료;
- }
- $arr = $rs->fetchall()
- print_r($arr);
- ?>
-
-
코드 복사
pdo 및 pdostatement 객체에는 errorcode() 및 errorinfo() 메서드가 있습니다. 오류가 없으면 errorcode()가 반환됩니다. 예: 00000, 그렇지 않으면 일부 오류 코드가 반환됩니다.
errorinfo()는 PHP에서 정의한 오류 코드와 MySQL의 오류 코드 및 오류 메시지를 포함하는 배열을 반환합니다.
정렬
(
[0] => 42s22
[1] => 1054
[2] => '필드 목록'의 알 수 없는 열 'aaa'
)
각 쿼리가 실행된 후 errorcode()의 결과가 최신이므로 오류 메시지 표시를 직접 쉽게 제어할 수 있습니다.
pdo를 사용하여 PHP 및 데이터베이스를 개발하는 동안 다시 오류가 발생하면 어떻게 해야 합니까? 위와 같이 처리합니다.
11.3.4 pdo 오류 처리
pdo는 프로그램에서 오류 정보를 얻는 두 가지 방법을 제공합니다. 하나는 errorcode() 메서드이고 다른 하나는 errorinfo() 메서드입니다.
1. 오류코드() 메소드
errorcode() 메소드는 데이터베이스 핸들을 운영할 때 발생하는 오류 코드를 얻는 데 사용됩니다. 이 메소드의 구문 형식은 다음과 같습니다.
01 문자열 errorcode(void) errorcode() 메소드의 반환 값은 sqlstate입니다. sqlstate는 5개의 숫자와 문자로 구성된 코드입니다.
errorcode() 메소드 사용 예:
$dsn = 'mysql:dbname=shop;host=localhost'; $user_name = 'root'; $user_psw = 'root'; $pdo = new pdo($dsn, $user_name, $user_psw) $pdo->exec("update mytable set age=28 where id=1 ");//mytable 테이블이 존재하지 않습니다echo "errorcode is: ".$pdo->errorcode();
?>
코드 복사
오류 코드 출력은 아래와 같습니다.
2. errorinfo() 메소드
errorinfo() 메소드는 데이터베이스 핸들 연산 시 발생하는 오류 정보를 얻는 데 사용됩니다. 이 메소드의 구문 형식은 다음과 같습니다.
01 배열 errorinfo (void) errorinfo() 메서드의 반환 값은 관련 오류 정보가 포함된 배열입니다.
errorinfo() 메소드 사용:
-
- $dsn = 'mysql:dbname=shop;host=localhost';
- $user_name = 'root';
- $user_psw = 'root';
- $pdo = new pdo($dsn, $user_name, $user_psw)
- $pdo->exec("update mytable set age=28 where id=1 "); //mytable 테이블이 존재하지 않습니다
- echo "errorinfo is: ";
- print_r($pdo->errorinfo());
- ?>
코드에 의해 출력되는 오류 메시지는 다음과 같습니다.
|