Twice is Once: MySQL データベース挿入の問題を理解する
複雑なシナリオでは、PHP コードが MySQL データベースに予期せずデータを挿入することを意図していました。 1 回の実行後にデータを 2 回挿入します。コードはローカルホスト上では問題なく機能しますが、サーバーにデプロイすると重複の問題が発生します。さらに、ページが 2 回更新された場合、データベースには 1 つの結果のみが反映されます。この複雑なジレンマにより、どのような要因がこの異常な動作に寄与しているのかという疑問が生じます。
隠れた犯人
その答えは、ブラウザのリクエスト処理にあります。ブラウザーは Web ページを読み込むときに、メイン スクリプト用とファビコン用の 2 つを含む複数のリクエストを送信します。この場合、コードは 1 回しか実行されませんが、.htaccess ファイルの存在によりすべてのリクエストがインデックス ファイルに再ルーティングされ、複数のデータベース挿入が行われます。
解決策
この問題を解決するには、favicon リクエストを除く特定のリクエストに対してのみ挿入クエリを実行するようにコードを変更する必要があります。これは、リクエスト URI に favicon.ico ファイルの存在をチェックする条件を追加することで実現できます。ファイルが存在しない場合は、通常のページ要求を意味し、挿入クエリが実行されます。それ以外の場合はスキップされます。
改訂されたコード
次の改訂されたコードは、必要な条件を導入することで問題に対処しています。
if (!strpos($_SERVER['REQUEST_URI'], 'favicon.ico')) { $result = mysql_query($sql); }
以上が私の PHP コードが 1 回実行しただけで MySQL にデータを 2 回挿入するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。