Heim > Datenbank > MySQL-Tutorial > Warum erhalte ich zwei Einträge in meiner MySQL-Datenbank, wenn ich nur einen in PHP einfüge?

Warum erhalte ich zwei Einträge in meiner MySQL-Datenbank, wenn ich nur einen in PHP einfüge?

DDD
Freigeben: 2024-12-03 01:49:10
Original
951 Leute haben es durchsucht

Why Do I Get Two Entries in My MySQL Database When I Only Insert Once in PHP?

Warum führt das einmalige Einfügen in PHP zu zwei Einträgen in der MySQL-Datenbank?

Beim Ausführen des bereitgestellten PHP-Codes auf einem Server kann Folgendes auftreten: ein verwirrendes Problem, bei dem das Einfügen eines einzelnen Datensatzes in eine MySQL-Datenbank zu zwei Einträgen führt. Dieses Problem, das auftritt, wenn der Code auf einem Live-Server, aber nicht auf Localhost bereitgestellt wird, stellt Entwickler vor ein Rätsel.

Der Schuldige hinter dieser Anomalie liegt im Verhalten des Browsers. Beim Aktualisieren der Seite sendet der Browser zwei Anfragen an den Server: eine für das Hauptskript und eine für das Favicon. In dieser Situation wird die Einfügeabfrage zweimal ausgeführt, was zum Einfügen von zwei Datensätzen führt.

Um dieses Problem zu beheben, sollte die Einfügeabfrage auf nur eine der Anforderungen beschränkt werden. Durch die Implementierung einer bedingten Prüfung, die überprüft, ob die Anfrage für das Hauptskript gilt, können Sie verhindern, dass die Abfrage für die Favicon-Anfrage ausgeführt wird.

Hier ist ein geänderter Codeausschnitt, der dieses Problem behebt:

<?php
$db = mysql_connect('localhost', 'zzzzzzz', 'xxxxxx') or die('Unable to connect.' . mysql_error());
mysql_select_db('test', $db) or die(mysql_error($db));

// Check if the request is for the main script
if ($_SERVER['REQUEST_URI'] == '/script.php') {
    $sql = "INSERT INTO test_table(value, insert_time) VALUES ('testing', '" . time() . "')";
    $result = mysql_query($sql);
}

$select = "select * from test_table";
$rs = mysql_query($select);
while ($row = mysql_fetch_array($rs)) {
    echo $row["test_id"] . " -- " . $row["value"] . " -- " . $row["insert_time"] . "<br />";
}
?>
Nach dem Login kopieren

Durch die Integration dieser bedingten Prüfung wird die Einfügeabfrage nur ausgeführt, wenn das Hauptskript angefordert wird, wodurch sichergestellt wird, dass nur ein einziger Datensatz in das eingefügt wird Datenbank.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich zwei Einträge in meiner MySQL-Datenbank, wenn ich nur einen in PHP einfüge?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage