ホームページ > データベース > mysql チュートリアル > 私の PHP コードが 1 回実行しただけで MySQL にデータを 2 回挿入するのはなぜですか?

私の PHP コードが 1 回実行しただけで MySQL にデータを 2 回挿入するのはなぜですか?

Susan Sarandon
リリース: 2024-11-10 04:11:02
オリジナル
304 人が閲覧しました

Why Does My PHP Code Insert Data Twice in MySQL After Only One Run?

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 サイトの他の関連記事を参照してください。

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