Heim  >  Artikel  >  Datenbank  >  Warum fügt mein PHP-Skript Daten zweimal in MySQL ein, obwohl ich es nur einmal ausgeführt habe?

Warum fügt mein PHP-Skript Daten zweimal in MySQL ein, obwohl ich es nur einmal ausgeführt habe?

Linda Hamilton
Linda HamiltonOriginal
2024-11-24 05:29:10597Durchsuche

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

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn