MySQLI Extension 사용은 PHP에서 데이터베이스 작업을 수행하는 가장 일반적인 방법 중 하나입니다. 그러나 데이터베이스 쿼리 오류가 발생하면 일반적으로 개발자가 문제를 찾아서 해결할 수 있도록 명확하고 상세한 오류 프롬프트 시스템이 필요합니다. mysqli :: $ errno는 데이터베이스 작업에서 발생하는 오류 코드를 얻는 데 사용될 수 있습니다. MySQLI :: $ 오류 와 결합하여 자세한 오류 프롬프트 시스템을 구현할 수 있습니다.
이 기사는 mysqli :: $ errno를 사용하여 쿼리 오류가 발생할 때 개발자가 충분한 오류 정보를 얻을 수 있도록 자세한 데이터베이스 쿼리 오류 프롬프트 시스템을 구축하는 방법을 소개합니다.
실제 오류 처리 시스템에서 먼저 데이터베이스에 대한 연결을 설정해야합니다. PHP에서는 MySQLI 클래스를 사용하여이를 수행 할 수 있습니다.
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
// 연결을 만듭니다
$conn = new mysqli($servername, $username, $password, $dbname);
// 연결을 감지하십시오
if ($conn->connect_error) {
die("연결이 실패했습니다: " . $conn->connect_error);
}
?>
데이터베이스 쿼리 실행이 실패하면 mysqli :: $ errno는 잘못된 번호를 반환 하고 mysqli :: $ 오류는 오류 설명 정보를 반환합니다. 이 정보를 사용하여 상세한 오류 프롬프트를 생성 할 수 있습니다.
<?php
$sql = "SELECT * FROM non_existing_table"; // 잘못된 쿼리
$result = $conn->query($sql);
if (!$result) {
$errorCode = $conn->errno; // 오류 코드를 가져옵니다
$errorMessage = $conn->error; // 오류 메시지를 받으십시오
echo "쿼리 오류,오류 코드:$errorCode,오류 메시지:$errorMessage";
}
?>
위의 코드에서는 오류를 트리거 할 목적으로 잘못된 SQL 쿼리를 의도적으로 작성했습니다. 쿼리가 실패하면 $ conn-> errno를 통해 오류 코드와 $ conn-> 오류 를 통해 오류 설명을 통해 개발자가 문제를 명확하게 이해할 수 있도록 도와줍니다.
오류 프롬프트를보다 작동시키기 위해 오류 메시지는 오류 코드, 쿼리 컨텐츠, 오류 시간 등과 같은 더 많은 진단 정보를 포함하여 HTML 페이지로 서식 할 수 있습니다.
<?php
function handleDatabaseError($conn) {
$errorCode = $conn->errno;
$errorMessage = $conn->error;
$query = $conn->last_query; // 가장 최근에 실행 된 쿼리를 얻으십시오
$timestamp = date("Y-m-d H:i:s");
echo "<h2>数据库쿼리 오류</h2>";
echo "<p><strong>오류 시간:</strong>$timestamp</p>";
echo "<p><strong>오류 코드:</strong>$errorCode</p>";
echo "<p><strong>오류 메시지:</strong>$errorMessage</p>";
echo "<p><strong>실행 쿼리:</strong><pre>$query</pre></p>";
echo "<p>확인하세요 SQL 쿼리하고 오류를 수정하려고합니다。</p>";
}
$sql = "SELECT * FROM non_existing_table"; // 오류 쿼리
$result = $conn->query($sql);
if (!$result) {
handleDatabaseError($conn); // 오류 처리 기능 호출
}
?>
이 예에서는 상세한 오류 정보를 형식화하고 표시하는 HandleDatabaseError 함수를 만듭니다. 또한 개발자가 문제의 근본 원인을 신속하게 찾을 수 있도록 실행 된 SQL 쿼리를 시연했습니다.
페이지에 오류 메시지를 표시하는 것 외에도 로그 파일에 오류 메시지를 녹음하는 것이 일반적입니다. 이는 프로덕션 환경에서 민감한 데이터베이스 오류 메시지의 직접 노출을 피합니다.
<?php
function logDatabaseError($conn) {
$errorCode = $conn->errno;
$errorMessage = $conn->error;
$query = $conn->last_query;
$timestamp = date("Y-m-d H:i:s");
$logMessage = "[$timestamp] 오류 코드: $errorCode, 오류 메시지: $errorMessage, 질문: $query\n";
file_put_contents("database_errors.log", $logMessage, FILE_APPEND);
}
$sql = "SELECT * FROM non_existing_table"; // 오류 쿼리
$result = $conn->query($sql);
if (!$result) {
logDatabaseError($conn); // 로그 오류 로그를 기록합니다
handleDatabaseError($conn); // 처리 및 표시 오류
}
?>
위의 코드는 로그 파일 database_errors.log 에 오류 정보를 작성하는 방법을 보여줍니다. 이러한 방식으로 개발자는 사용자에게 직접 노출하지 않고 서버 로그 파일의 모든 데이터베이스 쿼리 오류를 볼 수 있습니다.
mysqli :: $ errno 및 mysqli :: $ 오류를 결합하면 세부 데이터베이스 쿼리 오류 프롬프트 시스템을 구축하여 개발자가 문제를 신속하게 찾을 수 있도록 도와줍니다. 또한 프로덕션 환경에서 민감한 데이터베이스 오류 정보가 노출되지 않도록 시스템의 견고성을 더욱 향상시킬 수 있습니다.
이 오류 처리 방법은 특히 복잡한 데이터베이스 작업에 직면 할 때 개발 및 디버깅 효율성을 크게 향상시킬 수 있습니다. 시스템의 보안 및 유지 관리 가능성을 더욱 향상 시키려면이 기준으로 더 많은 로그 분석 및 오류 모니터링 기능을 추가 할 수 있습니다.