데이터베이스 작업에 PHP에서 PDO (PHP Data Objects)를 사용하는 경우 EXEC () 메소드는 종종 삽입 , 업데이트 , 삭제 등과 같은 결과 세트를 리턴하지 않는 SQL 문을 실행하는 데 사용됩니다. 그러나 개발 및 디버깅 프로세스 중에 문제를 해결하기 위해서는 더 자세한 오류 정보가 필요합니다. 이 기사에서는 pdo :: exec를 사용할 때 자세한 오류 보고서를 활성화하고보기 방법을 설명합니다.
PDO :: EXEC 메소드는 SQL 문을 실행하고 영향을받는 행의 수를 반환합니다. 실행이 실패하면 False가 반환됩니다. 그러나 기본적으로 오류 메시지는 자동으로 출력되지 않으며 오류 모드는 수동으로 켜고 오류 세부 사항을 얻어야합니다.
<?php
$pdo = new PDO('mysql:host=m66.net;dbname=testdb;charset=utf8', 'username', 'password');
$sql = "UPDATE users SET status = 'active' WHERE id = 10";
$result = $pdo->exec($sql);
if ($result === false) {
echo "실행 실패,그러나 자세한 오류 메시지는 없습니다。";
} else {
echo "영향을 받았습니다 {$result} 좋아요。";
}
?>
PDO는 다양한 오류 처리 모드를 지원하며 가장 일반적으로 사용되는 모드는 다음과 같습니다.
pdo :: errmode_silent : 기본 모드, 오류가 발생하지 않으며 오류 코드 만 기록됩니다.
pdo :: errmode_warning : PHP 경고를 트리거합니다.
pdo :: errmode_exception : 예외를 던집니다.
PDO :: errmode_exception을 사용하여 예외를 포착하여 자세한 오류 정보를 얻을 수 있습니다.
<?php
try {
$pdo = new PDO('mysql:host=m66.net;dbname=testdb;charset=utf8', 'username', 'password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "UPDATE users SET status = 'active' WHERE id = 10";
$result = $pdo->exec($sql);
echo "영향을 받았습니다 {$result} 좋아요。";
} catch (PDOException $e) {
echo "执좋아요出错: " . $e->getMessage();
}
?>
예외 모드를 사용하지 않으면 다음 방법으로 오류 메시지를 볼 수 있습니다.
<?php
$pdo = new PDO('mysql:host=m66.net;dbname=testdb;charset=utf8', 'username', 'password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
$sql = "UPDATE users SET status = 'active' WHERE id = 10";
$result = $pdo->exec($sql);
if ($result === false) {
$errorInfo = $pdo->errorInfo();
echo "오류 코드: " . $errorInfo[0] . "<br>";
echo "驱动오류 코드: " . $errorInfo[1] . "<br>";
echo "오류 메시지: " . $errorInfo[2];
} else {
echo "영향을 받았습니다 {$result} 좋아요。";
}
?>
errorInfo () 배열을 반환합니다.
[0] SQLSTATE 오류 코드 (표준 오류 코드)
[1] 드라이버 특정 오류 코드
[2] 드라이버 특정 오류 메시지
디버깅 단계에서 pdo :: errmode_exception을 활성화하여 예외를 포착하고 오류를 찾는 것이 좋습니다.
프로덕션 환경은 예외를 포착 한 후 로깅을 고려하여 사용자에게 오류 메시지를 직접 출력하지 않도록합니다.
문자 인코딩으로 인한 오류를 피하기 위해 데이터베이스 연결 문자 세트가 올바르게 설정되어 있는지 확인하십시오.
SQL 주입을 방지하고 오류 문제 해결을 용이하게하기 위해 전처리 명세서 ( 준비 + 실행 )를 사용하십시오.
위의 방법을 통해 pdo :: exec를 사용할 때 쉽게 켜지고 자세한 오류 보고서를보고 디버깅 효율성을 효과적으로 개선하고 문제를 신속하게 찾을 수 있습니다.
관련 태그:
PDO