PHP에서 MySQL 데이터베이스를 사용할 때 MySQLI 확장은 매우 유용한 디버깅 도구 인 MySQLI :: Debug를 제공합니다. 이를 통해 개발자는 데이터베이스 쿼리에 대한 자세한 정보를 얻을 수있어 문제 문제 해결 및 데이터베이스 작업을 최적화하는 데 도움이됩니다. 이 기사에서는 MySQLI :: 디버그 의 디버깅 정보를 웹 페이지의 앞쪽 끝에 표시하는 방법을 설명합니다.
mysqli :: debug 는 MySQLI 클래스의 정적 메소드로 현재 데이터베이스 연결의 디버그 정보를 인쇄 할 수 있습니다. 이 정보에는 실행 된 SQL 쿼리, 쿼리 실행 계획, 데이터베이스 연결 상태 등이 포함됩니다.이 정보는 특히 복잡한 SQL 쿼리를 디버깅 할 때 개발자에게 매우 유용합니다.
예를 들어 다음 코드는 현재 데이터베이스 작업에 대한 자세한 정보를 출력합니다.
mysqli::debug("d:t"); // 여기 "d:t" 디버그 출력을 활성화하는 데 사용됩니다
그러나 기본적으로 MySQLI :: Debug 의 정보는 PHP 오류 로그에 출력됩니다. 이 디버깅 정보를 웹 페이지의 프론트 엔드에 직접 표시하려면 다음이이를 달성하는 방법을 설명합니다.
웹 페이지의 프론트 엔드에 mysqli :: 디버그 출력을 표시하려면 다음 단계를 수행해야합니다.
먼저 mysqli :: debug가 활성화되어 있고 디버그 정보를 출력 할 수 있는지 확인해야합니다.
// 디버그 출력을 활성화합니다
mysqli::debug("d:t");
MySQLI :: Debug를 통한 디버그 정보 출력은 기본적으로 PHP 오류 로그에 직접 표시되지만 웹 페이지의 프론트 엔드에 표시하려면 출력 버퍼링 방법을 사용하여 디버그 정보를 웹 페이지에 캡처하고 인쇄해야합니다.
<?php
// 출력 버퍼링을 시작하십시오
ob_start();
// 데이터베이스에 연결하십시오
$mysqli = new mysqli('localhost', 'username', 'password', 'database_name');
// 디버그 출력을 활성화합니다
mysqli::debug("d:t");
// 데이터베이스 쿼리 작업을 수행 할 수 있습니다
$query = "SELECT * FROM users WHERE id = 1";
$result = $mysqli->query($query);
// 디버그 정보를 얻으십시오
$debug_info = ob_get_contents();
// 출력 버퍼링을 끕니다
ob_end_clean();
// 웹 페이지의 출력 디버그 정보
echo '<pre>' . htmlspecialchars($debug_info) . '</pre>';
?>
위의 코드는 몇 가지 중요한 단계를 수행합니다.
OB_START ()는 출력 버퍼링을 시작합니다. 모든 출력은 일시적으로 저장되며 즉시 브라우저에 표시되지 않습니다.
데이터베이스에 연결하고 쿼리를 실행 한 후 MySqli :: Debug ( "D : T")는 디버그 정보를 출력 버퍼에 씁니다.
OB_GET_CONTENTS ()는 버퍼의 모든 출력 정보를 캡처하여 $ debug_info 변수에 저장합니다.
OB_END_CLEAN ()은 출력 버퍼링을 닫아 정보가 반복적으로 출력되는 것을 방지합니다.
마지막으로 Echo 함수를 통해 <fre> 태그로 디버깅 정보를 포맷하고 웹 페이지로 출력합니다.
웹 페이지에서 디버그 정보를보다 명확하고 쉽게 읽을 수 있도록 HTML 및 CSS를 사용하여 디버그 정보 스타일을 사용자 정의 할 수 있습니다. 간단한 예는 다음과 같습니다.
<?php
// 출력 버퍼링을 시작하십시오
ob_start();
// 데이터베이스에 연결하십시오
$mysqli = new mysqli('localhost', 'username', 'password', 'database_name');
// 디버그 출력을 활성화합니다
mysqli::debug("d:t");
// 쿼리 작업을 수행하십시오
$query = "SELECT * FROM users WHERE id = 1";
$result = $mysqli->query($query);
// 디버그 정보를 얻으십시오
$debug_info = ob_get_contents();
// 출력 버퍼링을 끕니다
ob_end_clean();
// 웹 페이지의 디버그 정보 형식 및 출력
echo '<div style="background-color: #f4f4f4; border: 1px solid #ccc; padding: 10px;">';
echo '<h3>디버깅 정보:</h3>';
echo '<pre style="font-size: 14px; color: #333; background-color: #f8f8f8; padding: 15px; border: 1px dashed #ddd;">' . htmlspecialchars($debug_info) . '</pre>';
echo '</div>';
?>
이 접근법은 디버그 정보를 웹 페이지에서 깔끔하게 보이게하고 사용자 정의 CSS 스타일로 쉽게 읽을 수 있도록합니다.
MySQLI :: Debug 의 정보 출력에는 민감한 데이터베이스 정보가 포함되어 있으므로 프로덕션 환경에서주의해서 사용하십시오. 생산 환경에서는 디버그 출력을 비활성화하거나 제한하는 것이 가장 좋습니다.
디버깅 정보가 웹 페이지의 프론트 엔드로 출력되면 민감한 데이터가 유출되지 않아야합니다. 특히 매개 변수 또는 데이터베이스 사용자 이름 및 SQL 쿼리의 비밀번호가 있는지 확인하십시오.
디버깅 정보는 매우 클 수 있으므로 데이터 양이 너무 커지면 웹 페이지에 직접 출력하는 대신 로그 파일에 정보를 저장하는 것을 고려할 수 있습니다.
MySQLI :: Debug를 활성화하고 출력 버퍼링을 사용하여 MySQL 데이터베이스 작업에 대한 세부 디버그 정보를 웹 페이지의 프론트 엔드에 표시 할 수 있으며, 이는 개발 및 디버깅에 매우 유용합니다. 공식적으로 출시되기 전에 민감한 정보의 누출을 방지하기 위해 디버깅 기능을 끄십시오.