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