PHP wird einmal ausgeführt, aber zweimal in die MySQL-Datenbank eingefügt
Wenn Sie den bereitgestellten Code lokal ausführen, kann es zu einer Anomalie kommen, bei der die Datenbank zwei einfügt Datensätze anstelle von einem, nachdem das Skript nur einmal ausgeführt wurde. Dieses Problem tritt besonders deutlich in Browsern wie Opera oder Chrome auf.
Das Problem entsteht durch ein häufiges Browserverhalten: das Anfordern von Favicons. Wenn eine Website aufgerufen wird, sendet der Browser eine Anfrage für das Skript und eine zweite Anfrage für das Favicon. Da der Code in Ihrem Fall jede Anfrage verarbeitet, versucht er zweimal, einen Datenbankeintrag einzufügen, was zu doppelten Einträgen führt.
Um dieses Problem zu beheben, sollten Sie Ihren Code ändern, um sicherzustellen, dass nur die Einfügeabfrage ausgeführt wird für bestimmte Anfragen, wie zum Beispiel das anfängliche Laden der Seite. Sie können dies erreichen, indem Sie die PHP-Variable $_SERVER['REQUEST_URI'] verwenden, die den angeforderten URI der aktuellen Seite bereitstellt. Durch den Vergleich dieser Variablen mit einem bekannten Wert (z. B. dem Homepage-URI) können Sie die Ausführung der Einfügeabfrage auf bestimmte Anforderungen beschränken.
Sie können Ihren Code beispielsweise wie folgt ändern:
$requestURI = $_SERVER['REQUEST_URI']; if ($requestURI == '/index.php') { $sql = "INSERT INTO test_table (value, insert_time) VALUES ('testing', '" . time() . "')"; $result = mysql_query($sql); }
Diese Änderung stellt sicher, dass die Einfügeabfrage nur ausgeführt wird, wenn auf die Homepage zugegriffen wird, und verhindert so doppelte Datenbankeinfügungen, wenn der Browser das Favicon anfordert.
Das obige ist der detaillierte Inhalt vonWarum fügt mein PHP-Skript Daten zweimal in MySQL ein, obwohl ich es nur einmal ausgeführt habe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!