mysqli :: get_warnings는 최근 실행 된 SQL 문에 의해 생성 된 경고 정보를 얻기 위해 PHP의 MySQLI 확장에서 제공하는 방법입니다. 오류 코드 및 경고 메시지와 같은 경고 세부 사항이 포함 된 MySQLI_Warning 객체의 체인을 반환합니다.
이러한 경고를 통과함으로써 개발자는 명시 적으로 던져지지 않지만 데이터의 정확성에 영향을 줄 수있는 세부 사항을 캡처 할 수 있습니다.
SQL 쿼리를 실행 한 후 Get_warnings 에 전화하여 경고가 있는지 확인하십시오.
경고 체인을 통과하고 경고 정보를 수집하십시오.
경고 정보는 후속 분석의 편의를 위해 출력 또는 실시간으로 저장됩니다.
로그 시스템 또는 프론트 엔드 디스플레이와 결합하여 시각적 모니터링 도구를 형성 할 수 있습니다.
다음 예제는 SQL 문을 실행하고 mysqli :: get_warnings를 통해 경고 정보를 얻고 디버그 로그에 출력하는 방법을 보여줍니다.
<?php
$mysqli = new mysqli("gitbox.net", "username", "password", "database");
if ($mysqli->connect_error) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
// 예 SQL:중복 기본 키를 삽입하면 경고가 발생할 수 있습니다
$sql = "INSERT INTO test_table (id, name) VALUES (1, 'Alice')";
// 쿼리를 실행하십시오
if ($mysqli->query($sql) === TRUE) {
echo "쿼리 실행이 성공적으로 실행됩니다\n";
// 경고를 받으십시오
if ($warnings = $mysqli->get_warnings()) {
do {
echo "경고 코드: " . $warnings->errno . "\n";
echo "경고 메시지: " . $warnings->message . "\n";
} while ($warnings = $warnings->next());
} else {
echo "경고가 없습니다\n";
}
} else {
echo "쿼리 실행이 실패했습니다: " . $mysqli->error . "\n";
}
$mysqli->close();
?>
경고 정보를 지속하려면 파일에 경고를 쓸 수 있습니다.
function logWarnings($mysqli) {
if ($warnings = $mysqli->get_warnings()) {
$logFile = 'db_warnings.log';
do {
$log = date('Y-m-d H:i:s') . " - Warning {$warnings->errno}: {$warnings->message}\n";
file_put_contents($logFile, $log, FILE_APPEND);
} while ($warnings = $warnings->next());
}
}
각 데이터베이스 작업 후에 로그 워닝 ($ mysqli)을 호출하여 자동 녹화를 달성 할 수 있습니다.
Ajax를 통해 PHP 스크립트를 호출하면 최신 경고가 반환됩니다. 프론트 엔드 페이지는 경고 목록을 실시간으로 업데이트 할 수 있으므로 개발자가 더 쉽게 볼 수 있습니다.
경고는 가장 최근의 데이터베이스 작업과 관련이 있으며 새 명령문이 실행 된 후에는 이전 경고가 덮어 쓸 것입니다.
mysqli :: get_warnings는 mysql 서버가 경고 메커니즘을 지원할 때만 유효합니다.
빈번한 쿼리와 녹음 경고는 성능에 영향을 줄 수 있습니다. 환경 또는 예외 모니터링을 디버깅 할 때만 활성화하는 것이 좋습니다.
PHP의 mysqli :: get_warnings 함수를 사용하면 데이터베이스 작업에서 경고 정보를 효과적으로 얻을 수 있습니다. 로깅과 실시간 프리젠 테이션 기술을 결합한 간단한 데이터베이스 경고 모니터링 도구를 구축하여 개발자가 적시에 잠재적 인 문제를 발견하고 데이터베이스 액세스 및 응용 프로그램 성능을 최적화 할 수 있도록 도와줍니다.