PHP-Funktionen - ausprobiert

pg_select()

array pg_select ( resource connection, string table_name,
array assoc_array [, int options])

eindimensionale Arrays

Mit pg_select() werden Datensätze aus einer Tabelle ausgewählt und in einem Array zurückgegeben. Die Tabelle muss dazu strukturgleich mit einem assoziativen Array sein und die Werte in den Tabellenspalten müssen mit den Werten des korrespondierenden Arrays übereinstimmen. Wir benutzen dazu wieder die Array- und Tabellendefinition aus pg_convert.php

Angenommen, die Tabelle enthalte die Zeilen:

phptest=# select * from obst;
 sorte  |  region  |     haendler     | preis
--------+----------+------------------+-------
 apfel  | bodensee | Kurt's Obstladen |  1.25
 orange | spanien  | Kurt's Obstladen |  1.40
 kiwi   | italien  | Kurt's Obstladen |  1.60
 apfel  | bodensee | Kurt's Obstladen |  1.25
 orange | spanien  | Kurt's Obstladen |  1.40
 kiwi   | italien  | Kurt's Obstladen |  1.60
(6 rows)

Wenn man nun den folgenden Code auführt, liest PHP alle Zeilen aus dieser Tabelle aus, die mit dem Array $obstarr übereinstimmen und gibt das resultierende Array $selectarr aus:

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

$selectarr = pg_select($conn, 'obst', $obstarr);
if ($selectarr) {
  $zeilen = count($selectarr); 
  echo "$zeilen Zeilen gelesen<br>";
  foreach ($selectarr as $k => $v) {
    foreach($v as $ks => $vs) {
      echo "selectarr[$k][$ks] = $vs<br>";
    }
  }
}
?>

Das Skript erzeugt die folgende Ausgabe, an der Sie sehen können, dass nur diese beiden Zeilen ausgegeben werden, da sie die einzigen sind, die mit dem Array $obstarray sowohl in der Struktur als auch im Inhalt übereinstimmen.

Result: 2 Zeilen gelesen
selectarr[0][sorte] = apfel
selectarr[0][region] = bodensee
selectarr[0][haendler] = Kurt's Obstladen
selectarr[0][preis] = 1.25
selectarr[1][sorte] = apfel
selectarr[1][region] = bodensee
selectarr[1][haendler] = Kurt's Obstladen
selectarr[1][preis] = 1.25

Falls die Tabelle mehr Spalten hat als das Array, werden diese Spalten mit pg_select() ebenfalls ausgegeben. Das resultierende $selectarray hat dann entsprechend mehr Elemente als das Array, das als Parameter übergeben wurde.

zweidimensionale Arrays

Ähnlich wie bei den anderen Funktionen, braucht man auch hier eine Schleife, um pg_select() auf die untergeordneten assoziativen Arrays anzuwenden. Dies demonstriert das folgende Codefragment, das auf die Tabelle aus dem vorigen Abschnitt zugreift, die Datensätze, die dem Array $obstarr[2] entsprechen, selektiert und anschliessend ausgibt:

<?php
// gibt alle kiwis aus der Tabelle aus
$selectarray = pg_select($conn, 'obst',$obstarr[2]);
foreach ($selectarray as $k2 => $v2) {
  foreach($v2 as $k3 => $v3) {
    echo "selectarray[$k2][$k3]= $v3<br>";
  }
}
?>

selectarray[0][sorte]= kiwi
selectarray[0][region]= italien
selectarray[0][haendler]= Kurt's Obstladen
selectarray[0][preis]= 1.60
selectarray[1][sorte]= kiwi
selectarray[1][region]= italien
selectarray[1][haendler]= Kurt's Obstladen
selectarray[1][preis]= 1.60

Enthält die Tabelle noch andere Felder, werden auch diese Felder mit ausgegeben. Wenn man in der Zwischenzeit die Felder editiert, beispielsweise setzt man 'kiwi' auf 'zitrone', werden keine Datensätze mehr gefunden und ausgegeben, da die Spaltenwerte nicht mehr mit den Werten des assoziativen Arrays übereinstimmen.

©cornelia boenigk 2003

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