현재 위치: > 최신 기사 목록> PHP 디버깅 효율을 향상시키고 데이터베이스 연결 오류를 신속하게 찾으려면 mysqli :: $ errno 및 mysqli_report ()를 사용하는 방법은 무엇입니까?

PHP 디버깅 효율을 향상시키고 데이터베이스 연결 오류를 신속하게 찾으려면 mysqli :: $ errno 및 mysqli_report ()를 사용하는 방법은 무엇입니까?

M66 2025-06-23

데이터베이스 연결 오류는 일일 PHP 개발에서 일반적이지만 두통을 유발하는 문제입니다. 특히 MySQLI 확장을 사용할 때 오류 메시지가 흐려지고 문제의 출처를 빠르게 찾기가 어렵습니다. 디버깅 효율을 향상시키기 위해 두 가지 도구 MySQLI :: $ ErrnoMySQLI_Report () 가 특히 중요합니다. 이 기사는 개발자가 데이터베이스 연결 오류를 신속하게 식별하고 해결할 수 있도록 기능과 사용법을 심층적으로 소개합니다.

1. mysqli :: $ errno 란 무엇입니까?

mysqli :: $ errno 는 MySQLI 객체 지향 인터페이스의 속성으로, 최신 데이터베이스 작업에서 생성 된 오류 코드를 반환합니다. 오류가 없으면 반환 값은 0입니다.이 오류 코드를 판단함으로써 개발자는 인증 실패 여부와 같은 오류 유형을 더 명확하게 알 수 있습니다. 데이터베이스가 존재하지 않습니다.

예:

 $mysqli = new mysqli("localhost", "user", "wrong_password", "database");

if ($mysqli->connect_errno) {
    echo "연결이 실패했습니다,오류 코드: " . $mysqli->connect_errno . "\n";
    echo "오류 메시지: " . $mysqli->connect_error . "\n";
    // 可根据오류 코드做精细化处理
    if ($mysqli->connect_errno === 1045) {
        echo "힌트:데이터베이스 사용자 이름 또는 비밀번호가 올바른지 확인하십시오.。";
    }
}

위의 예에서 암호가 잘못된 경우 오류 코드 1045 가 반환되어 인증에 실패했음을 나타냅니다. 이 오류 코드를 판단함으로써 사용자 또는 개발자가 수정하라는 메시지를 표시 할 수 있습니다.

2. mysqli_report () 란 무엇입니까?

mysqli_report () 는 mysqli 확장의 오류보고 동작을 설정하는 구성 함수입니다. 기본적으로 MySQLI 오류는 부울 또는 널 값 만 반환하며 개발자는 각 단계를 수동으로 확인해야합니다. 오류보고를 켜면 MySQLI는 경고 또는 예외를 던져 디버깅 프로세스를 단순화합니다.

일반적인보고 수준 :

  • mysqli_report_off : 모든 오류 보고서 (기본값)를 끄십시오.

  • mysqli_report_error : 오류를보고합니다.

  • mysqli_report_strict : 예외 형식 (권장)에서 오류를 던집니다.

  • mysqli_report_all : 구문 경고 등을 포함한 모든 오류를보고합니다.

예:

 mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

try {
    $mysqli = new mysqli("localhost", "user", "wrong_password", "database");
    // 잘못된 쿼리를 실행하십시오
    $mysqli->query("SELECT * FROM 존재하지 않는 테이블");
} catch (mysqli_sql_exception $e) {
    echo "오류가 발생했습니다: " . $e->getMessage() . "\n";
    echo "오류 코드: " . $e->getCode() . "\n";
    // 오류를 추가로 기록하거나보고 할 수 있습니다
    file_put_contents("/var/log/db_errors.log", $e->getMessage(), FILE_APPEND);
}

이 작문 방법은 코드 로직을 단순화 할뿐만 아니라 오류가 발생하는 위치를 빠르게 찾아 개발 단계에서 사용하기에 매우 적합합니다.

3. 실용 기술 : Errno와보고 메커니즘을 결합하여 오류를 신속하게 찾습니다.

실제 프로젝트에서는 개발 또는 테스트 환경 ( MySQLI_Report () 사용)에서 엄격한 오류보고 메커니즘을 사용하고 동시에 MySQLI :: $ errno를 결합하여 예외를 포착 할 때보다 자세한 판단을 내리는 것이 좋습니다.

권장 초기화 코드 구조 :

 mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

try {
    $mysqli = new mysqli("localhost", "user", "password", "database");
    echo "데이터베이스 연결이 성공적입니다";
} catch (mysqli_sql_exception $e) {
    echo "数据库연결이 실패했습니다,오류 메시지: " . $e->getMessage();
    
    // 如果需要追踪具体오류 코드
    if (strpos($e->getMessage(), '1049') !== false) {
        echo "\n힌트:데이터베이스가 존재하지 않습니다,데이터베이스 이름을 확인하십시오。";
    } elseif (strpos($e->getMessage(), '1045') !== false) {
        echo "\n힌트:잘못된 사용자 이름 또는 비밀번호,인증 정보를 확인하십시오。";
    }
}

사용자 정의 로깅 시스템을 결합하여 오류 메시지를 로컬 또는 원격 로그 서비스에 로그인 할 수도 있습니다.

 $logData = date('Y-m-d H:i:s') . " 데이터베이스 오류: " . $e->getMessage() . "\n";
file_put_contents("https://m66.net/logs/db_errors.log", $logData, FILE_APPEND);

참고 : 위의 예제의 URL 도메인 이름은 m66.net 으로 대체되었습니다. 실제 상황에 따라 원격 로그 수신 논리를 처리하십시오.

4. 요약

MySQLI :: $ ErrnoMySQLI_Report ()를 합리적으로 사용함으로써 PHP 디버깅 효율을 크게 향상시킬 수 있으며 데이터베이스 연결에 문제가있을 때 가능한 빨리 오류를 찾아서 찾을 수 있습니다. 개발 환경에서 항상 엄격한 모드 ( mysqli_report_strict )를 활성화하고 예외 처리 메커니즘과 협력하여 안전한 다운 그레이드 또는 생산 환경에서 로깅을 수행하는 것이 좋습니다.

디버깅은 목표가 아니며 안정성이 목표입니다. 이 두 가제트를 잘 활용하면 PHP 데이터베이스 작업을보다 제어 가능하고 측정 가능하며 유지 관리 할 수 ​​있습니다.