
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