ホームページ > データベース > mysql チュートリアル > PHP スクリプトを一度しか実行していないにもかかわらず、MySQL にデータを 2 回挿入するのはなぜですか?

PHP スクリプトを一度しか実行していないにもかかわらず、MySQL にデータを 2 回挿入するのはなぜですか?

Linda Hamilton
リリース: 2024-11-24 05:29:10
オリジナル
642 人が閲覧しました

Why is my PHP script inserting data twice into MySQL even though I only ran it once?

PHP は 1 回実行されますが、MySQL データベースに 2 回挿入されます

提供されたコードをローカルで実行すると、データベースが 2 つのコードを挿入するという異常が発生する可能性があります。スクリプトが 1 回だけ実行された後は、レコードの代わりにレコードが作成されます。この問題は、Opera や Chrome などのブラウザで特に顕著です。

この問題は、ブラウザの一般的な動作、つまりファビコンの要求によって発生します。 Web サイトにアクセスすると、ブラウザーはスクリプトのリクエストとファビコンの 2 番目のリクエストを送信します。この場合、コードはすべてのリクエストを処理するため、データベース レコードの挿入を 2 回試行し、エントリが重複してしまいます。

この問題を解決するには、挿入クエリのみが実行されるようにコードを変更する必要があります。最初のページ読み込みなどの特定のリクエストの場合。これは、現在のページの要求された URI を提供する PHP $_SERVER['REQUEST_URI'] 変数を利用することで実現できます。この変数を既知の値 (ホームページ URI など) と比較することで、挿入クエリの実行を特定のリクエストに制限できます。

たとえば、コードを次のように変更できます。

$requestURI = $_SERVER['REQUEST_URI'];
if ($requestURI == '/index.php') {
  $sql = "INSERT INTO test_table (value, insert_time) VALUES ('testing', '" . time() . "')";
  $result = mysql_query($sql);
}
ログイン後にコピー

この変更により、ホームページにアクセスしたときにのみ挿入クエリが実行されるようになり、ブラウザがファビコンを要求したときにデータベースが重複して挿入されるのを防ぎます。

以上がPHP スクリプトを一度しか実行していないにもかかわらず、MySQL にデータを 2 回挿入するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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