Guten Abend allerseits.
Ich brauche eine PHP-Datei, die doppelte Einträge in meiner MySQL-Tabelle löscht.
$query = "SELECT id,datum_ts,vorname,nachname,addresse FROM Tabelle WHERE 1";
$result = mysql_query($query);
while($row = mysql_fetch_object($result))
{
$query = "DELETE FROM Tabelle WHERE ((id != '$row->id') AND (datum_ts = '$row->datum_ts') AND (vorname = '$row->vorname') AND (nachname = '$row->nachname') AND (addresse = '$row->addresse'))";
mysql_query($query) or die(mysql_error());
}
Zu meiner Verwunderung wurden alle Einträge gelöscht (also sowohl 'Original' als auch 'Klon'). Ich dachte, " WHERE ((id != '$row->id') " würde dafür sorgen, dass das 'Original' nicht auch mitgelöscht wird.
Ich hab das ganze mal auf Folgendes reduziert:
$query = "SELECT id FROM Tabelle WHERE 1";
$result = mysql_query($query);
while($row = mysql_fetch_object($result))
{
$query = "DELETE FROM Tabelle WHERE ((id != '$row->id')";
mysql_query($query) or die(mysql_error());
}
Hiermit wurde die Tabelle geleert.
Anscheinend funktioniert das ganze mit der while-Schleife nicht so, wie ich mir das immer vorgestellt hab.
Wenn beim ersten Durchgang alle Datensätze bis auf den ersten gelöscht werden, kann die Schleife doch gar keinen zweiten Durchgang machen?! Was ist denn die zweite ID, die sich von der ersten unterscheiden muss, damit diese gelöscht werden kann?
Ich versteh das nicht und bitte um Rat!
Gute Nacht,
Christian