ホームページ > バックエンド開発 > PHPチュートリアル > 「mysqli_query() または die()」が悪い習慣である理由と、より良い代替策は何ですか?

「mysqli_query() または die()」が悪い習慣である理由と、より良い代替策は何ですか?

Linda Hamilton
リリース: 2025-01-01 07:05:08
オリジナル
863 人が閲覧しました

Why is

「Mysqli or Die」の危険: PHP での代替エラー処理

mysqli 拡張機能を使用して MySQL データベースと対話する場合、エラーを処理するために「or die」構造を使用するのが一般的です。ただし、このアプローチには、検討する必要があるいくつかの欠点があります。

なぜ「Or Die」は廃止されるべきですか?

  • システム内部の露出: 「Or die」は機密性の高いシステム メッセージを表示し、悪意のある攻撃に脆弱性をさらす可能性がありますユーザー。
  • ユーザーの混乱: エラー メッセージは、技術的な専門知識のない一般ユーザーにとっては不可解でイライラする可能性があります。
  • スクリプトの終了: 「さもなければ死ぬ」スクリプトの実行を突然終了し、ユーザー エクスペリエンスを中断し、エラーを妨げます。分析。
  • 回復可能性の欠如: 例外とは異なり、「or die」には正常な回復やエラー ログの機会がありません。
  • エラーの場所が欠落しています: 「Or die」ではエラーの原因となっている行が示されないため、面倒な作業になります。 debug.

「Or Die」の代替

「Or Die」に依存する代わりに、エラー時に例外をスローするように mysqli を設定することを強くお勧めします。 。これは、次のコードで実現できます:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
ログイン後にコピー

その後、追加コードなしで MySQL コマンドを実行できます:

$result = mysqli_query($link, $sql);
ログイン後にコピー

例外処理

例外が発生した場合、それをキャッチして適切に処理できます。例:

try {
    $result = mysqli_query($link, $sql);
} catch (mysqli_sql_exception $e) {
    // Log the error in a custom table or file
    log_error($e->getMessage());
}
ログイン後にコピー

カスタム エラー ログ

例外処理に加えて、カスタマイズされたエラー ログ システムを確立することが望ましいです。これにより、専用のテーブルまたはファイルにエラーを記録できるようになり、トラブルシューティングのための集中リポジトリが提供されます。ログ機能は次のように実装できます:

function log_error($message) {
    // Connect to the error logging table database
    $error_conn = connect_to_error_logging_db();

    // Insert the error message into the error logging table
    $query = "INSERT INTO error_log (message, timestamp) VALUES ('$message', NOW())";
    mysqli_query($error_conn, $query);

    // Close the error logging database connection
    mysqli_close($error_conn);
}
ログイン後にコピー

以上が「mysqli_query() または die()」が悪い習慣である理由と、より良い代替策は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート