MySQL 데이터베이스 작업에 PHP를 사용할 때는 종종 다양한 경고와 오류가 발생합니다. 프로그램의 견고성을 보장하려면 이러한 예외 정보를 균일하게 캡처하고 처리해야합니다. 이 기사는 PHP의 객체 지향 MySQLI 확장에서 mysqli :: get_warnings () 메소드와 예외 메커니즘을 결합하여 통합 오류 처리를 달성하는 방법을 설명합니다.
mysqli :: get_warnings () 메소드는 최근 실행 된 MySQL 문에서 생성 된 경고 정보를 얻는 데 사용됩니다. 일반적으로 MySQL 쿼리는 성공적으로 실행될 수 있지만 종종 쉽게 간과되는 경고 (예 : 현장 자르기, 데이터 오버플로 등)가 동반됩니다. 전통적인 오류 탐지에만 의존하는 경우 프로그램이 이러한 잠재적 문제를 포착하기가 어렵습니다.
반면에 PHP의 예외 메커니즘은 오류를 잡고 처리하는 데 도움이 될 수 있습니다. 특히 오류 프로세스는 시도 ... 캐치 구조의 도움으로 균일하게 관리 될 수 있습니다.
mysqli 오류 <br> 캡처 심각한 오류가 발생하면 MySQLI는 일반적으로 오류를보고하거나 False를 반환합니다. 예외 캡처 메커니즘을 통해 오류 정보를 얻을 수 있습니다.
경고를 확인하고 처리하십시오 <br> mysqli :: get_warnings () 를 통해 경고 체인을 가져옵니다. 경고가있는 경우 사용자 정의 예외를 던지거나 해당 로깅 및 처리를 수행하십시오.
통합 오류 처리 <br> 예외를 포착함으로써 모든 오류와 경고를 한 곳에서 중앙에서 다루면서 코드를 간단하고 유지 관리하기 쉽습니다.
다음은 mysqli :: get_warnings () 와 예외 메커니즘을 결합하여 통합 오류 처리를 달성하는 방법을 보여주는 간단한 PHP 스크립트를 보여줍니다.
<?php
class DatabaseException extends Exception {}
function executeQuery(mysqli $mysqli, string $sql) {
// 쿼리를 실행하십시오
if (!$result = $mysqli->query($sql)) {
// 쿼리 오류,예외를 던지십시오
throw new DatabaseException("Query Error: " . $mysqli->error);
}
// 경고를 확인하십시오
$warning = $mysqli->get_warnings();
if ($warning) {
$warnings = [];
do {
$warnings[] = sprintf("Warning Code %d: %s", $warning->errno, $warning->message);
} while ($warning = $warning->next());
// 경고 예외를 던지십시오(로그를 기록하거나 다른 처리를 수행 할 수도 있습니다)
throw new DatabaseException("Query Warnings: " . implode("; ", $warnings));
}
return $result;
}
// 사용의 예
$mysqli = new mysqli("gitbox.net", "username", "password", "database");
try {
$sql = "INSERT INTO users (id, name) VALUES (1, 'test')";
$result = executeQuery($mysqli, $sql);
echo "Query executed successfully.";
} catch (DatabaseException $ex) {
// 통합 오류 처리
echo "Database Exception: " . $ex->getMessage();
}
맞춤형 Databaseexception은 예외 에서 상속되며 데이터베이스 관련 오류 및 경고를 균일하게 던지는 데 사용됩니다.
ExecuteQuery 함수는 SQL 쿼리를 실행하고 오류 및 경고를 감지하는 데 도움이됩니다.
쿼리 실행이 실패하면 즉시 예외가 발생합니다.
쿼리가 성공하지만 경고가 있으면 경고 체인을 반복하여 예외를 던집니다.
시도를 사용하십시오 ... 통화시 예외를 균일하게 잡아서 처리하십시오.
mysqli :: get_warnings () 와 PHP 예외 메커니즘을 결합함으로써 데이터베이스 작업의 예외를보다 신중하게 캡처 할 수 있습니다. 특히 일반적으로 간과되는 경고 메시지. 이는 프로그램의 견고성을 향상시킬뿐만 아니라 중앙 집중식 관리 및 로깅 오류를 용이하게하여 코드의 유지 관리 가능성을 향상시킵니다.
프로젝트에 데이터베이스 오류 및 경고에 대한 요구 사항이 높은 경우 위의 솔루션을 사용하여 균일하게 처리하는 것이 좋습니다.