PHP-Funktionen - ausprobiertpg_delete()
mixed pg_delete ( resource connection, string table_name, array assoc_array [, int options])
eindimensionale Arrays
Mit dieser Funktion löscht man Datensätze aus einer Tabelle, deren Feldnamen den Indizes eines assoziativen Arrays entsprechen und deren Spaltenwerte mit den Werten der Arrayelemente identisch sind. Als Beispiele werden wir die Tabelle und Arrays benutzen, die auf der Seite pg_convert.php definiert sind. In der Tabelle sind bereits ein paar Datensätze eingefügt:
sorte | region | haendler | preis
--------+------------+------------------+-------
apfel | bodensee | Kurt's Obstladen | 1.25
birne | Südtirol | Obst&Gemüse |
kiwi | neuseeland | Kiwi-Connection | 0.36
orange | Spanien | Salvatore | 2.09
banane | Costa Rica | Banana Joe | 1.34
$obstarr sei das eindimensionale Array mit dem 'apfel'. Dann löscht ein Aufruf von
$del = pg_delete($conn, 'obst', $obstarr);
alle Datensätze aus der Tabelle obst, die diesem Array entsprechen. In der Tabelle oben ist dies der erste Eintrag.
ACHTUNG: Wenn Sie in der Zwischenzeit die Tabelle manuell bearbeiten, beispielsweise den Preis verändern, wird der Datensatz nicht gelöscht, obwohl die Funktion ein korrektes Ergebnis zurückgibt. Stimmen dagegen die Werte in den Spalten mit den Werten in den Arrayelementen überein, wird der Datensatz zuverlässig gelöscht
Wenn die Tabelle mehr Felder als das assoziative Array hat, werden die Datensätze aus der Tabelle gelöscht, unabhängig davon, ob die zusätzlichen Tabellenfelder leer sind oder Werte enthalten. Hat die Tabelle weniger Felder als das Array Elemente, kann nicht gelöscht werden. Hier gilt offenbar dasselbe wie oben für pg_convert() und pg_insert(): Die Operationen können nur ausgeführt werden, wenn das assoziative Array in die Tabelle "hineinpasst", also höchstens so viele Elemente hat, wie die Tabelle Spalten.
Aufeinanderfolgende Aufrufe von pg_insert() fügen jedesmal einen Datensatz in die Tabelle ein. ABER: ein einziger Aufruf von pg_delete() löscht alle Datensätze, deren Spaltenwerte mit den Werten der Arrayelemente identisch sind, aus der Tabelle.
zweidimensionale Arrays
Angenommen, wir haben dieselbe Tabelle wie in dem Beispiel oben. pg_delete() muss dann für jedes Element des übergeordneten Arrays, d.h. für jedes assoziative Array aufgerufen werden, um alle diese Datensätze wieder zu löschen. Wie bei den anderen Funktionen zur Modifikation von zweidimensionalen Arrays wird dies von einer Schleife gemacht:
<?php
foreach ($obstarr as $k2 => $v2) {
$del = pg_delete($conn, 'obst', $v2);
}
?>
Wollen Sie nur die Werte eines bestimmten untergeordneten Arrays aus der Tabelle löschen, so können Sie das mit einem Aufruf von
$del = pg_delete($conn, 'obst', $obstarr[0]);
tun. Hier werden alle Eintraege des Arrays $obstarr[0] (apfel) aus der Tabelle gelöscht. Zwischenzeitlich upgedatete Datensätze können gelöscht werden, indem man das Array $upddata als Argument angibt.
©cornelia boenigk 2003 |