PHP-Funktionen - ausprobiert

pg_convert()

Voraussetzungen

Voraussetzung für diese Funktion ist das Vorhandensein eines assoziatives Arrays und einer Datenbanktabelle. Die Indizes des Arrays und die Felder der Datenbanktabelle müssen einander entsprechen.

Erzeugen wir zunächst ein Array:

<?php
$obstarr = array (
    "sorte" => "apfel", 
    "region" => "bodensee", 
    "haendler" => "Kurt's Obstladen"
    "preis" => "1.25");
?>

Diese Anweisung erzeugt das folgende Array:

obstarr[sorte] = apfel
obstarr[region] = bodensee
obstarr[haendler] = Kurt's Obstladen
obstarr[preis] = 1.25

Als nächstes definieren wir eine Tabelle, die als Feldnamen die Indizes des assoziativen Arrays hat.

phptest=# create table obst(sorte varchar(12), region varchar(15), 
phptest-# haendler varchar(20), preis numeric(4,2));
CREATE TABLE

phptest=# select * from obst;
 sorte | region | haendler | preis
-------+--------+----------+-------
(0 rows)
array pg_convert (resource connection, string table_name,
array assoc_array [, int options])

Diese Funktion prüft und konvertiert die Werte eines assoziativen Arrays in das Format, in dem ein SQL Befehl die Daten erwartet. Als Ergebnis wird ein neues Array mit den konvertierten Daten zurückgegeben.

eindimensionale Arrays

Rufen wir die Funktion pg_convert() mit unseren Argumenten auf:

$convarr = pg_convert($conn, 'obst', $obstarr);

Diese Anweisung erzeugt das folgende Array:

convarr[sorte] = 'apfel'
convarr[region] = 'bodensee'
convarr[haendler] = 'Kurt''s Obstladen'
convarr[preis] = 1.25

Die Textstrings in dem konvertierten Array sind in Hochkommata eingeschlossen und das Hochkomma in 'Kurt''s Obstladen' ist mit einem zweiten Hochkomma maskiert. Die Daten sind damit in dem Format, in dem sie ein SQL-Befehl erwartet. Sollte ein Arrayelement einen Wert enthalten, der nicht mit dem Datentyp der korrespondierende Spalte kompatibel ist, gibt die Funktion FALSE zurück.Ebenso, wenn das assoziative Array mehr Elemente hat, als die korrespondierende Tabelle. Wenn das Array weniger Elemente als die korrespondierende Tabelle hat, werden die vorhandenen Elemente konvertiert.

zweidimensionale Arrays

Voraussetzung ist auch hier das Vorhandensein eines assoziatives Arrays und einer korrespondierenden Datenbanktabelle. Diesmal erzeugen wir ein zweidimensionales Array, bei dem die Indizes des untergeordneten Arrays den Feldnamen der Tabelle entsprechen. Das umgebende Array muss nicht assoziativ sein. Die oben definierte Tabelle können wir auch hier als Argument angeben.

$obstarr = array (
array("sorte" => "apfel", "region" => "bodensee", 
      "haendler" => "Kurt's Obstladen", "preis" => "1.25"),
array("sorte" => "orange", "region" => "spanien", 
      "haendler" => "Kurt's Obstladen", "preis" => "1.40"),
array("sorte" => "kiwi", "region" => "italien", 
      "haendler" => "Kurt's Obstladen", "preis" => "1.60"));

Diese Anweisung erzeugt das folgende Array:

obstarr[0][sorte] = apfel
obstarr[0][region] = bodensee
obstarr[0][haendler] = Kurt's Obstladen
obstarr[0][preis] = 1.25

obstarr[1][sorte] = orange
obstarr[1][region] = spanien
obstarr[1][haendler] = Kurt's Obstladen
obstarr[1][preis] = 1.40

obstarr[2][sorte] = kiwi
obstarr[2][region] = italien
obstarr[2][haendler] = Kurt's Obstladen
obstarr[2][preis] = 1.60

Die Funktion pg_convert() muss jetzt für jedes Element des übergeordneten Arrays aufgerufen werden, somit fur jedes assoziative Array. Dies erledigen wir in einer Schleife:

foreach ($obstarr as $k2 => $v2) {
  $conv = pg_convert($conn, 'obst', $v2);
  $convarr[$k2]=$conv;
}

Diese Schleifenanweisung erzeugt das folgende Array:

convarr[0][sorte] = 'apfel'
convarr[0][region] = 'bodensee'
convarr[0][haendler] = 'Kurt''s Obstladen'
convarr[0][preis] = 1.25

convarr[1][sorte] = 'orange'
convarr[1][region] = 'spanien'
convarr[1][haendler] = 'Kurt''s Obstladen'
convarr[1][preis] = 1.40

convarr[2][sorte] = 'kiwi'
convarr[2][region] = 'italien'
convarr[2][haendler] = 'Kurt''s Obstladen'
convarr[2][preis] = 1.60

©cornelia boenigk 2003
Elefant
© Cornelia Boenigk
Wasenstrasse 8
72124 Pliezhausen
mail: c@pgsql.info
PostgreSQL powered
Valid HTML 4.01
Valid CSS