현재 위치: > 최신 기사 목록> 스크립트 실행 중에 실시간으로 mysqli_stmt :: $ 오류 정보를 캡처하십시오

스크립트 실행 중에 실시간으로 mysqli_stmt :: $ 오류 정보를 캡처하십시오

gitbox 2025-05-19

MySQL 기반 PHP 응용 프로그램을 개발할 때 MySQLI 확장은 일반적으로 데이터베이스와 상호 작용하는 데 사용됩니다. MySQLI는 많은 유용한 기능을 제공하지만 적용 및 처리되지 않으면 쉽게 디버깅 할 수없는 응용 프로그램 충돌 또는 문제를 일으킬 수있는 잠재적 오류와 예외도 있습니다.

이 기사는 MySQLI_STMT :: $ 오류 오류 정보를 PHP 스크립트의 실시간으로 캡처하고 처리하는 방법에 중점을 두어 데이터베이스 작업을보다 효율적으로 디버그하고 최적화합니다.

1. mysqli_stmt :: $ 오류 가란 무엇입니까?

mysqli_stmt :: $ error는 전처리 명령문을 실행할 때 생성 된 오류 메시지가 포함 된 MySQLI_STMT 클래스의 속성입니다. MySQLI_STMT 클래스의 execute () 메소드가 호출되면 SQL 쿼리를 실행하도록 호출되면 오류가 발생하면 $ 오류 속성이 오류 설명 정보를 저장합니다. 이 속성을 확인하면 특정 오류 내용을 이해하고 추가 디버깅을 수행 할 수 있습니다.

2. mysqli_stmt :: $ 오류 오류 메시지를 캡처하는 것이 왜 중요한가?

데이터베이스 작업을 수행 할 때 오류 메시지가 캡처되지 않으면 잠재적 인 데이터베이스 문제를 놓칠 수 있습니다. 특히 SQL 쿼리가 실패하거나 데이터 예외를 예외하면 응용 프로그램이 계속 실행되어 일관되지 않은 데이터 또는 비정상적인 기능이 발생할 수 있습니다. 따라서 실시간으로 오류 정보를 캡처하고 처리하는 데 도움이 될 수 있습니다.

  • 제 시간에 SQL 오류를 발견하고 수정하십시오.

  • 개발자가 문제를 찾을 수 있도록 명확한 디버깅 정보를 제공합니다.

  • 데이터베이스 작업을 최적화하고 애플리케이션 안정성 및 성능을 향상시킵니다.

3. MySQLI_STMT :: $ 오류 오류 메시지를 잡고 처리합니다

PHP에서는 mysqli_stmt :: $ 오류 속성을 통해 SQL 오류 메시지를 캡처 할 수 있습니다. 다음은 MySQLI Extension의 전처리 명세서를 사용하여 오류를 잡고 처리하는 방법을 보여주는 기본 예입니다.

샘플 코드 :

 <?php

// 데이터베이스 연결 정보
$host = 'localhost';
$username = 'root';
$password = 'password';
$database = 'test_db';

// 데이터베이스 연결을 만듭니다
$mysqli = new mysqli($host, $username, $password, $database);

// 연결이 성공했는지 확인하십시오
if ($mysqli->connect_error) {
    die("연결이 실패했습니다: " . $mysqli->connect_error);
}

// 전처리 진술을 만듭니다
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
if ($stmt === false) {
    die("진술을 준비하지 못했습니다: " . $mysqli->error);
}

// 매개 변수를 바인딩하고 진술을 실행합니다
$id = 1;
$stmt->bind_param("i", $id);
if (!$stmt->execute()) {
    // 오류를 잡고 처리합니다
    echo "쿼리를 실행하는 동안 오류가 발생했습니다: " . $stmt->error;
} else {
    // 처리 결과
    $result = $stmt->get_result();
    while ($row = $result->fetch_assoc()) {
        echo "사용자ID: " . $row['id'] . ", 사용자名: " . $row['username'] . "<br>";
    }
}

// 진술과 연결을 닫습니다
$stmt->close();
$mysqli->close();

?>

코드 설명 :

  1. 데이터베이스 연결 : 먼저 MySQLI Extension을 사용하여 데이터베이스 연결을 생성하고 $ mysqli-> connect_error를 통해 연결이 성공했는지 확인합니다.

  2. SQL 명세서 준비 : $ mysqli-> repay ()를 사용하여 전처리 명령문을 만듭니다. 생성이 실패하면 오류 메시지를 직접 출력합니다.

  3. SQL 쿼리 실행 : execute ()을 호출하여 전처리 문을 실행할 때 오류가 발생하면 mysqli_stmt :: $ 오류 및 출력 상세 오류 정보를 통해 오류를 캡처합니다. 그렇지 않으면 쿼리 결과를 계속 처리하십시오.

  4. 연결 닫기 : 데이터베이스 작업을 실행 한 후 리소스 누출을 피하기 위해 문과 데이터베이스 연결을 닫아야합니다.

4. 오류 처리 및 로깅을 최적화합니다

실제 개발에서, 특히 생산 환경에서 디버깅 요구 사항을 충족하기에 오류 정보를 캡처하고 출력하는 것만으로는 충분하지 않을 수 있습니다. 데이터베이스 작업을보다 효율적으로 디버그하고 최적화하려면 브라우저에서 직접 출력하는 대신 오류 메시지를 로그 파일에 로그인 할 수 있습니다.

오류 로깅 예 :

 <?php

// 로그 파일 경로를 정의합니다
define('LOG_FILE', '/var/log/php_errors.log');

// 사용자 정의 오류 처리 기능
function logError($error_message) {
    // 현재 타임 스탬프를 얻으십시오
    $timestamp = date('Y-m-d H:i:s');
    
    // 형식 오류 메시지
    $log_message = "[$timestamp] - $error_message\n";
    
    // 로그 파일에 쓰십시오
    file_put_contents(LOG_FILE, $log_message, FILE_APPEND);
}

// 데이터베이스 연결 및 실행 부분이 없습니다...

// 쿼리를 실행할 때 오류가 발생합니다
if (!$stmt->execute()) {
    $error_message = "쿼리를 실행하는 동안 오류가 발생했습니다: " . $stmt->error;
    
    // 로그 오류 로그
    logError($error_message);
    
    // 출력 간결한 오류 메시지(자세한 데이터베이스 오류 정보는 노출되지 않습니다)
    echo "데이터베이스 작업이 실패했습니다,나중에 다시 시도하십시오。";
}

// 연결을 닫으십시오
$stmt->close();
$mysqli->close();

?>

코드 설명 :

  • 로그 파일 : 로그 파일로의 경로를 저장하기 위해 상수 log_file을 정의합니다. 실제로 사용하면 서버 환경에 따라 적절한 경로를 선택할 수 있습니다.

  • 사용자 정의 오류 처리 기능 : logerror () 함수는 오류 정보를 로그 파일에 기록합니다. 각 레코드에는 나중에 시청 및 분석을위한 현재 타임 스탬프가 포함됩니다.

  • 로그 오류 쿼리를 실행할 때 오류 : 오류를 포착 한 후 페이지에 직접 출력하는 대신 LogerRor () 함수를 통해 로그 파일에 오류 메시지를 씁니다.

이러한 방식으로, 우리는 개발자의 사후 사후를 촉진하면서 생산 환경에서 오류의 개인 정보를 유지할 수 있습니다.

5. 요약

PHP에서 MySQLI_STMT :: $ 오류 속성을 사용하여 데이터베이스 오류 정보를 캡처하고 프로세스하면 문제를보다시기 적절하게 발견하고 수정하는 데 도움이 될 수 있습니다. 오류 처리 기능을 향상시키기 위해 로깅 시스템을 결합하여 개발 프로세스 중에 세부 오류 정보를 캡처하여 애플리케이션의 디버깅 및 최적화를 용이하게하는 것이 좋습니다.

또한 합리적인 오류 처리는 시스템의 안정성과 사용자 경험을 크게 향상시킬 수 있습니다. PHP 응용 프로그램을 개발하고 배포 할 때는 데이터베이스 작업의 오류 캡처 및 처리에주의를 기울이는 것이 중요합니다.