<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 이 부분은 기사의 내용과 관련이 없습니다.,원하는대로 추가 할 수 있습니다 PHP 코드를 주석 또는 초기화합니다</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"초기화가 완료되었습니다\n"</span></span><span>;
</span><span><span class="hljs-variable">$dummy</span></span><span> = </span><span><span class="hljs-literal">true</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
------------------------------------------------------------
</span><span><span class="hljs-comment"># 흔한 PDOStatement::errorCode 오류 코드 및 해당 솔루션,FAQ 문제를 해결하는 방법?</span></span><span>
존재하다 PHP 가운데,사용 PDO(PHP Data Objects)데이터베이스 작업을 수행 할 때,우리는 종종 만난다 `</span><span><span class="hljs-title class_">PDOStatement</span></span><span>::</span><span><span class="hljs-variable constant_">errorCode</span></span><span>` 반환 오류 코드。이러한 오류 코드와 그 의미를 이해하십시오,빠른 포지셔닝 문제、개발 효율성 향상은 매우 중요합니다。이 기사는 일반적인 오류 코드를 자세히 소개합니다.、원인과 솔루션,문제 해결 아이디어를 제공합니다。
</span><span><span class="hljs-comment">## 하나、PDOStatement::errorCode 소개</span></span><span>
`</span><span><span class="hljs-title class_">PDOStatement</span></span><span>::</span><span><span class="hljs-variable constant_">errorCode</span></span><span>` 方法返回하나个 SQLSTATE 오류 코드,这是하나个 </span><span><span class="hljs-number">5</span></span><span> 位的标准化오류 코드,식별에 사용됩니다 SQL 执行가운데的错误情况:
- 처음 두 자리는 오류 범주를 나타냅니다(Class)
- 마지막 세 자리는 특정 오류를 나타냅니다(Subclass)
전화 예제:
```php
</span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$pdo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"SELECT * FROM non_existing_table"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span><span><span class="hljs-variable">$errorCode</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">errorCode</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$errorCode</span></span><span>; </span><span><span class="hljs-comment">// 가능한 출력 "42S02"</span></span><span>
</span></span>다음은 개발에서 종종 발생하는 오류 코드와 가능한 이유입니다.
SQL 실행이 성공하고 오류가 발생하지 않음을 나타냅니다. 이것은 PDO의 정상적인 수익입니다.
일반적으로 치명적이지 않은 경고에 사용됩니다.
자동 데이터 유형 변환 경고
SQL 실행이 성공적이지만 경고 메시지가 있습니다.
자세한 정보는 pdostatement :: errorinfo () 를 통해 얻을 수 있습니다.
일반적인 시나리오 :
기본 키 삽입을 반복하십시오
외국의 주요 제약 조건이 실패했습니다
독특한 인덱스 충돌
해결책:
삽입 된 데이터가 이미 존재하는지 확인하십시오
외국 키와 관련된 데이터가 존재하는지 확인하십시오
반복적 인 운영을 피하기 위해 비즈니스 로직을 조정하십시오
일반적인 이유 :
SQL 구문 오류
테이블 또는 필드 이름 틀린
현재 데이터베이스 사용자 권한이 충분하지 않습니다
문제 해결 방법 :
전체 SQL을 인쇄하여 데이터베이스 관리 도구에서 실행하십시오.
데이터베이스 사용자의 권한 구성을 확인하십시오
테이블 이름과 필드 이름이 올바른지 확인
이것은 일반적인 오류 코드입니다. 이는 일반적으로 PDO가 오류의 특정 원인을 결정할 수 없음을 의미합니다. 가능한 이유는 다음과 같습니다.
연결 해제 된 데이터베이스 연결
실행 시간 초과
드라이버 내부 오류
해결책:
데이터베이스 연결 상태를 확인하십시오
시간 초과 구성을 추가하십시오
자세한 내용은 데이터베이스 로그를보십시오
표준 sqlstate 오류 코드 외에도 일부 데이터베이스는 MySQL 23000 과 같은 특정 오류 코드를 반환 할 수 있습니다. MySQL 오류 번호 1062 (반복 키). 이 경우 데이터베이스 드라이버의 원래 오류 메시지는 pdostatement :: errorinfo () 의 세 번째 요소와 조합하여 얻을 수 있습니다.
<span><span><span class="hljs-variable">$errorInfo</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">errorInfo</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$errorInfo</span></span><span>[</span><span><span class="hljs-number">2</span></span><span>]; </span><span><span class="hljs-comment">// 데이터베이스 드라이버가 반환 한 출력 상세 오류 정보</span></span><span>
</span></span>SQL 문을 확인하십시오. 정확성 <br> SQL을 인쇄하고 데이터베이스 클라이언트에서 확인을 수행하십시오.
전체 오류 메시지보기 <br> ErrorInfo ()를 사용하여 문제를 분석하는 데 도움이되는 자세한 정보를 얻으십시오.
매개 변수 바인딩 <br>을 확인하십시오 바인딩 파라미터의 유형과 순서가 올바른지 확인하십시오.
데이터베이스 연결 상태를 확인하십시오 . <br> 연결이 실수로 연결이 끊어지면 Hy000 오류가 발생할 수 있습니다.
데이터베이스 로그 <br>을 확인하십시오 데이터베이스 로그에 많은 오류가 기록되어 있습니다.
<span><span><span class="hljs-keyword">try</span></span><span> {
</span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$pdo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO users(id, name) VALUES(:id, :name)"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>([</span><span><span class="hljs-string">':id'</span></span><span> => </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-string">':name'</span></span><span> => </span><span><span class="hljs-string">'Alice'</span></span><span>]);
} </span><span><span class="hljs-keyword">catch</span></span><span> (PDOException </span><span><span class="hljs-variable">$e</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Error Code: "</span></span><span> . </span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">errorCode</span></span><span>() . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">errorInfo</span></span><span>());
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Exception message: "</span></span><span> . </span><span><span class="hljs-variable">$e</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getMessage</span></span><span>() . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span></span>위의 방법을 사용하면 일반적인 pdostatement 오류를 빠르게 찾아 해결할 수 있습니다.
pdostatement :: ErrorCode는 표준 sqlstate 오류 코드를 제공하여 오류 유형을 신속하게 결정하는 데 도움이됩니다.
ErrorInfo ()는 정확한 문제 해결을 위해보다 자세한 드라이버 계층 정보를 반환합니다.
일반적인 오류에는 제약 조건 위반, 구문 오류, 불충분 한 권한 및 일반 오류가 포함됩니다.
체계적인 조사 프로세스는 개발자가 단기간에 문제를 찾아 개발 효율성을 향상시키는 데 도움이 될 수 있습니다.
PDO 오류 코드 및 문제 해결 방법을 마스터하면 부적절한 오류 처리로 인해 비정상적인 프로그램 중단을 피하면서 데이터베이스 작업을보다 안전하고 신뢰할 수 있습니다.
<span></span>
관련 태그:
PDOStatement