Mehrere SQL-Datensätze löschen

  • Themenstarter Themenstarter ULtImateFreak
  • Beginndatum Beginndatum
U

ULtImateFreak

Hallo Community.

Ich bräuchte ein bisschen Hilfe beim löschen von mehreren Datensätzen in einer MySQL-Datenbank.

Ich habe ein kleines Nachrichtensystem geschrieben, weiß jedoch nicht wie ich ich nur bestimmte Nachrichten löschen will, wenn ich sie alle aufgelistet habe. Vor den Nachrichten steht eine Checkbox, deren Wert die msg_id ist (msg_id = Primärschlüssel in der Tabelle)
Ich brauche also eine Schleife die mir den SQL-Befehl so ungefähr auf diese Art zusammenbaut.

$sql = 'DELETE FROM `msgs` WHERE `msg_id` = 1 LIMIT 1; # Erste markierte Nachricht.'
. ' DELETE FROM `msgs` WHERE `msg_id` = 73 LIMIT 1; # zweite markierte Nachricht.'
. ' ';

....
Ich hab schon versucht die Funktion aus den php-Dateien von phpMyAdmin rauszufinden, da dies jedoch zu viele Datein sind, hab ich irgendwann aufgegeben :(
Vielleicht kann mir jemand helfen, bzw. ned link schicken, wo ich sowas finde.

MfG ULtImateFreak
 
Du könntest die Abfragen wie folgt zusammenfassen:
Code:
DELETE
  FROM
        `msgs`
  WHERE
        `msg_id` = 1
    OR  `msg_id` = 73
    OR  …
 
erst mal danke für deine hilfe, mein größtes problem ist eigentich wie ich die ganzen einzelnen werte innerhalb einer schleife in ein array speichere und danach wieder einzeln auslese.

Mit Schleifen hab ichs noch ned so ganz ^^
 
Du könntest eine der folgenden Varianten zu generierung der Anfrage benutzen:
PHP:
<?php

	$zuLöschendeDatensätze = array( 1, 2, 3, 4, 5 );
	$query = "
		DELETE
		  FROM
		        `msgs`
		  WHERE
		        0";
	echo '<pre>'.$query.chr(0xD).chr(0xA).'    OR `msg_id` = '.implode(chr(0xD).chr(0xA).'    OR `msg_id` = ', $zuLöschendeDatensätze).'</pre>';
	array_walk($zuLöschendeDatensätze, 'blah', array('msg_id', 'OR', 'nostring'));
	echo '<pre>'.$query.implode(chr(0xD).chr(0xA), $zuLöschendeDatensätze).'</pre>';

	function blah(&$value, $key, $userdata) {
		list($column, $boolean_operator, $type) = $userdata;
		$output = array();
		$value = ' '.$boolean_operator.' `'.$column.'` = '.($type=='string'?'"':'').addcslashes($value, chr(0x22)).($type=='string'?'"':'').' ';
	}

?>
 
Zurück