Klaus Mock: Mehrere Bilder aus der DB aufeinmal löschen? (perl/mysql)

Beitrag lesen

Hallo,

loeschen=Feb18_11.JPG&loeschen=IM003003.JPG

read(STDIN, $daten, $ENV{'CONTENT_LENGTH'});

[...]

$FM{$para} = $value;

Da Du zwei CGI-Parameter mit dem gleichen Namen verwendest, wird beim jedem Durchlauf $FM{'loeschen'} überschrieben.
Somit wird halt nur das letzte Bild gelöscht. Du mußt DIr irgend etwas anderes einfallen lassen, wie etwa mit einem Array zu arbeiten.
Besser wäre es, wenn DU Dich mit dem MOdul CGI.pm beschäftigst, da dieses viel lästige Anpassungsarbeiten überflüssig macht. Der von Dir verwendete Code ist überhaupt nicht robust, sprich, er hat massive Schwierigkeiten, auf allfällige Änderungen bei der Parameterübergabe zu reagierien.

BTW: es ist nicht gerade perlish, wenn Du Variablenbezeichner GROSS schreibst. Lies dazu 'perldoc perlstyle'.

#so wird halt leider immer nur 1 Bild gelöscht

$sth = $dbh->prepare ("DELETE FROM $table1
     WHERE name_pic = ('$FM{'loeschen'}') ");
$sth->execute ;
$sth->finish ;

Entweder Du verwendest das schon angesprochene OR in der WHERE-Klausel oder Bind-Variablen.
Hier ein Beispiel mit einer Bind-Variable, welches ich für übersichtlicher halte.

$sth = $dbh->prepare ("DELETE FROM $table1 WHERE name_pic = ?");
foreach $bild (@zu_loeschende_bilder)
  {
  $sth->execute($bild);
  }
$sth->finish;

Näheres findest Du in der DBI-Dokumentation.

Grüße
  Klaus