QUOTE (pl_90 @ Mo 1.10.2007, 20:26)while (list($id, $url) = mysql_fetch_array($res))
{
mysql_query("DELETE FROM tabelle WHERE url = '".$url."' and id != '".$id."'"
;
}
Nur ist genau dies das, was man mit Sql nicht machen soll. Sql ist mengenorientiert. Wenn man da ein per Mengenzugriff lösbares Problem zeilenweise löst (noch dazu mit einem Herauskopieren der Daten in eine andere Sprache), dann ist das normalerweise um ein Vielfaches aufwendiger.
Außerdem ist der Code nicht wirklich sicher. Entweder kopiert mysql_fetch_array alle Daten auf einmal raus (was ich nicht weiß), dann würden alle mehrfachen Einträge gelöscht werden, weil die erste ID die zweite und die zweite die erste löscht. Oder mysql_fetch_array ruft die Daten zeilenweise vom Datenbankserver ab. Wenn dann zwischen dem Abrufen und dem Löschen ein anderer Nutzer genau diese herausgezogene ID interaktiv löschen würde, dann wäre die zugeordnete Url auch endgültig weg.
Und Code, der zu viel löscht, den sollte man vermeiden - denn sonst kommt Murphy und es passiert genau das, was eigentlich fast nicht passieren kann