現在の位置: ホーム> 最新記事一覧> mysqli :: $ errnoを使用して、詳細なデータベースクエリエラープロンプトシステムを作成する方法?

mysqli :: $ errnoを使用して、詳細なデータベースクエリエラープロンプトシステムを作成する方法?

M66 2025-06-23

MySQLI拡張機能を使用することは、PHPでデータベース操作を行う最も一般的な方法の1つです。ただし、データベースクエリエラーの場合、通常、開発者が問題を見つけて解決できるように、明確で詳細なエラープロンプトシステムが必要です。 mysqli :: $ errnoを使用して、データベース操作で発生するエラーコードを取得できます。 mysqli :: $エラーと組み合わせることで、詳細なエラープロンプトシステムを実装できます。

この記事では、 mysqli :: $ errnoの使用方法を紹介し、詳細なデータベースクエリエラープロンプトシステムを構築して、クエリエラーが発生したときに開発者が十分なエラー情報を取得できるようにします。

1。準備:データベース接続を作成します

実際のエラー処理システムでは、最初にデータベースへの接続を確立する必要があります。 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);
}
?>

2。データベースのクエリを実行し、エラーを処理します

データベースクエリの実行が失敗すると、 mysqli :: $ errnoが間違った番号を返し、 mysqli :: $ errorはエラー説明情報を返します。この情報を使用して、詳細なエラープロンプトを生成できます。

 <?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->エラーを使用してエラーコードを取得して、開発者が問題を明確に理解できるようにします。

3.詳細なエラープロンプトシステムを実装します

エラープロンプトをより操作可能にするために、エラーコード、クエリコンテンツ、エラー時間などの診断情報を含む、エラーメッセージを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); // 呼び出しエラー処理機能
}
?>

この例では、詳細なエラー情報をフォーマットおよび表示するHondLedatabaseError関数を作成します。また、実行されたSQLクエリを実証して、開発者が問題の根本原因を迅速に見つけるのを支援しました。

4。ログにログエラー

ページにエラーメッセージの表示に加えて、ファイルをログにするためにエラーメッセージを記録することも一般的な慣行です。これにより、生産環境での機密データベースエラーメッセージの直接露出が回避されます。

 <?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にエラー情報を書き込む方法を示しています。このようにして、開発者はユーザーに直接公開することなく、サーバーのログファイルのすべてのデータベースクエリエラーを表示できます。

5。概要

mysqli :: $ errnomysqli :: $エラーを組み合わせることにより、詳細なデータベースクエリエラープロンプトシステムを構築して、開発者が問題をすばやく見つけるのに役立ちます。また、ロギングによりシステムの堅牢性をさらに強化し、生産環境で機密性の高いデータベースエラー情報が公開されないようにすることもできます。

このエラー処理方法は、特に複雑なデータベース操作に直面している場合、開発とデバッグ効率を大幅に改善できます。システムのセキュリティと保守性をさらに強化する場合は、これに基づいてログ分析とエラー監視機能を追加できます。