現在の位置: ホーム> 最新記事一覧> mysqliをエレガントに印刷する方法:: $ errno phpのエラーメッセージを使用して

mysqliをエレガントに印刷する方法:: $ errno phpのエラーメッセージを使用して

M66 2025-05-17

PHPでのデータベース操作にMySQLIを使用する場合、エラーメッセージを印刷する必要がある状況に遭遇することがよくあります。通常、 MySQLI拡張機能は、エラーコード( MySQLI :: $ ERRNO )とエラー情報( mysqli :: $ error )を提供して、エラーが発生したときに迅速にフィードバックされた問題を支援します。しかし、これらのエラーメッセージを優雅に印刷して、エラーログをより明確かつ簡単にデバッグできるようにするにはどうすればよいですか?この記事では、mysqli :: $ errnoを優雅に使用して、PHPでエラーコードとエラーメッセージを印刷する方法を示します。

1。基本的なmysqliエラー処理

まず、PHPでのデータベース接続と基本的なエラー処理にMySQLIを使用する方法を見てみましょう。 MySQLI Connectionオブジェクトでは、 MySQLI :: $ ERRORおよびMYSQLI :: $ ERRNOプロパティを介してエラーメッセージとエラーコードを取得できます。

サンプルコード:

 <?php
$host = 'localhost';
$username = 'root';
$password = 'password';
$database = 'test_db';

// 作成する MySQLi 接続する
$conn = new mysqli($host, $username, $password, $database);

// 检查接続する是否成功
if ($conn->connect_error) {
    echo "接続する失败: " . $conn->connect_error;
    exit();
}

// クエリを実行します
$sql = "SELECT * FROM non_existing_table";
$result = $conn->query($sql);

// クエリが成功したかどうかを確認してください
if (!$result) {
    // エラーコードとエラーメッセージを印刷します
    echo "エラーコード: " . $conn->errno . "<br>";
    echo "エラーメッセージ: " . $conn->error;
}

// 关闭接続する
$conn->close();
?>

説明する:

  • Connect_Errorを使用して、データベース接続が成功しているかどうかを確認します。

  • ERRNOエラーを使用して、エラーコードとエラー情報を取得します。

  • クエリを実行すると、エラーが発生した場合、詳細はerrnoおよびエラーを介して出力されます。

2。エラーメッセージを優雅に処理して記録します

エラーメッセージを直接出力するのは効果的ですが、生産環境では、通常、エラーログを記録し、機密情報がエンドユーザーに公開されないようにします。実際の開発では、エレガントなエラー処理は、開発者が問題を迅速に見つけるのに役立つだけでなく、システムのセキュリティとユーザーエクスペリエンスを向上させることもできます。

例:ロギングエラーメッセージ

error_log()関数を使用して、エラー情報をログファイルに書き込むことができます。これが改善されたコードです:

 <?php
$host = 'localhost';
$username = 'root';
$password = 'password';
$database = 'test_db';

$conn = new mysqli($host, $username, $password, $database);

if ($conn->connect_error) {
    // 使用 error_log 记录接続する错误
    error_log("接続する失败: " . $conn->connect_error, 3, "/var/log/php_errors.log");
    exit();
}

$sql = "SELECT * FROM non_existing_table";
$result = $conn->query($sql);

if (!$result) {
    // ログエラーログ
    error_log("エラーコード: " . $conn->errno . " エラーメッセージ: " . $conn->error, 3, "/var/log/php_errors.log");

    // 输出友好的エラーメッセージ
    echo "操作に失敗しました,後でもう一度やり直してください。";
}

$conn->close();
?>

説明する:

  • error_log()を使用して、指定されたログファイル( /var/log/php_errors.logなど)にエラー情報を書き込みます。

  • フロントエンドにユーザーフレンドリーなエラーメッセージを表示して、技術的な詳細を公開しないようにします。

  • 3-パラメーター設定を介してファイルにエラーを書き込みます。

3。生産環境でエラー出力をエレガントに無効にします

実稼働環境では、通常、PHPエラーディスプレイを無効にしてログに記録します。機密エラー情報がエンドユーザーに公開されるのを防ぐために、 PHP.iniを変更するか、次のコードを使用してエラー出力を無効にすることができます。

サンプルコード:

 <?php
// エラー表示を無効にします
ini_set('display_errors', '0');

// エラーログを有効にします
ini_set('log_errors', '1');
ini_set('error_log', '/var/log/php_errors.log');

// 接続する数据库并クエリを実行します
$conn = new mysqli($host, $username, $password, $database);

if ($conn->connect_error) {
    // 记录接続する错误
    error_log("接続する失败: " . $conn->connect_error, 3, "/var/log/php_errors.log");
    exit();
}

$sql = "SELECT * FROM non_existing_table";
$result = $conn->query($sql);

if (!$result) {
    // 记录エラーメッセージ
    error_log("エラーコード: " . $conn->errno . " エラーメッセージ: " . $conn->error, 3, "/var/log/php_errors.log");
    echo "操作に失敗しました,後でもう一度やり直してください。";
}

$conn->close();
?>

説明する:

  • ini_set( 'display_errors'、 '0') :エラー表示を無効にします。

  • ini_set( 'log_errors'、 '1') :エラーロギングを有効にします。

  • エラーメッセージは、error_log()関数を介して指定されたファイルに記録されます。

4.カスタムエラー処理機能を使用します

エラー処理をより柔軟にするために、 mysqli :: $ errnoおよびmysqli :: $エラーが均一に処理されるカスタムエラー処理機能を定義できます。これにより、複製コードが削減され、コードの保守性が向上します。

サンプルコード:

 <?php
// カスタムエラー処理機能
function handleMysqliError($conn) {
    // ログにログログエラー
    error_log("エラーコード: " . $conn->errno . " エラーメッセージ: " . $conn->error, 3, "/var/log/php_errors.log");

    // 显示友好的エラーメッセージ
    echo "操作に失敗しました,後でもう一度やり直してください。";
}

// 作成する数据库接続する
$conn = new mysqli($host, $username, $password, $database);

if ($conn->connect_error) {
    handleMysqliError($conn);
    exit();
}

$sql = "SELECT * FROM non_existing_table";
$result = $conn->query($sql);

if (!$result) {
    handleMysqliError($conn);
}

$conn->close();
?>

説明する:

  • HandlemysqlierRor関数は、エラー処理のロジックをカプセル化します。

  • エラーが発生した場合、関数を直接呼び出すと、コードを簡素化するだけでなく、統一されたエラー処理方法も保証されます。

結論

PHPでは、 mysqli :: $ errnoおよびmysqli :: $ errorを使用してエラーメッセージを印刷することが非常に一般的です。エラー処理をよりエレガントで安全にするために、ロギング、カスタムエラー処理機能など​​を使用して、ログ、エラーの出力を無効にすることにより、システムの堅牢性とユーザーエクスペリエンスを向上させることができます。

この記事が、データベース操作のエラーをPHPで優雅に処理する方法をよりよく理解するのに役立つことを願っています。ご質問がある場合は、メッセージを残して議論してください!