Signatur
Beschreibung
pg_fetch_all_columns() liest alle Zeilen einer bestimmten Spalte aus einem PostgreSQL-Abfrageergebnis aus und gibt sie als einfaches, numerisch indiziertes Array zurück. Dabei wird der Spalten-Index (nullbasiert) über den Parameter field angegeben.
Die Funktion ist besonders nützlich, wenn man ausschließlich die Werte einer einzigen Spalte benötigt – etwa alle IDs, alle E-Mail-Adressen oder alle Bezeichnungen – ohne die vollständige Zeilenstruktur verarbeiten zu müssen. Sie erspart eine manuelle Schleife über pg_fetch_row() oder pg_fetch_assoc().
NULL-Werte in der Datenbank werden als PHP-null im zurückgegebenen Array abgebildet. Das Ergebnis-Array ist immer numerisch indiziert, beginnend bei 0, unabhängig von der ursprünglichen Reihenfolge der Datenbankzeilen.
Ist das Abfrageergebnis leer (keine Zeilen), wird ein leeres Array zurückgegeben. Bei einem ungültigen Spalten-Index wird ein Fehler ausgelöst.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $result Pflicht | PgSql\Result | Eine PgSql\Result-Instanz, die von pg_query(), pg_query_params() oder pg_execute() zurückgegeben wurde. |
|
| $field | int | 0 | Der nullbasierte Index der Spalte, deren Werte zurückgegeben werden sollen. Standardmäßig wird die erste Spalte (Index 0) verwendet. |
Rückgabewert
NULL-Werte aus der Datenbank werden als PHP-null zurückgegeben. Bei einem leeren Ergebnissatz wird ein leeres Array zurückgegeben.Beispiele
Alle E-Mail-Adressen aus einer Benutzertabelle abrufen
<?php
$conn = pg_connect("host=localhost dbname=mydb user=myuser password=secret");
if (!$conn) {
die('Verbindung fehlgeschlagen');
}
$result = pg_query($conn, "SELECT email FROM users ORDER BY id");
if (!$result) {
die('Abfrage fehlgeschlagen: ' . pg_last_error($conn));
}
// Alle E-Mail-Adressen aus der ersten Spalte (Index 0) holen
$emails = pg_fetch_all_columns($result, 0);
foreach ($emails as $email) {
echo $email . PHP_EOL;
}
pg_free_result($result);
pg_close($conn);
Spalte per Index aus einer Multi-Spalten-Abfrage auslesen
<?php
$conn = pg_connect("host=localhost dbname=mydb user=myuser password=secret");
if (!$conn) {
die('Verbindung fehlgeschlagen');
}
// Abfrage liefert id (Index 0), name (Index 1), status (Index 2)
$result = pg_query($conn, "SELECT id, name, status FROM products WHERE active = true");
if (!$result) {
die('Abfrage fehlgeschlagen: ' . pg_last_error($conn));
}
// Nur die Produktnamen (Spalte Index 1) abrufen
$names = pg_fetch_all_columns($result, 1);
echo 'Aktive Produkte: ' . implode(', ', $names) . PHP_EOL;
// Anzahl der zurückgegebenen Einträge
echo 'Anzahl: ' . count($names) . PHP_EOL;
pg_free_result($result);
pg_close($conn);
// Wichtig · Fallstricke
Ungültiger Spalten-Index: Wird ein field-Index angegeben, der außerhalb des gültigen Bereichs liegt (kleiner als 0 oder größer/gleich der Anzahl der Spalten im Ergebnis), erzeugt PHP einen Fehler vom Typ ValueError (ab PHP 8.0) bzw. eine Warnung in älteren Versionen.
Zeigerposition: Im Gegensatz zu zeilenweisen Fetch-Funktionen liest pg_fetch_all_columns() immer alle Zeilen ab, unabhängig von der aktuellen internen Zeigerposition des Ergebnisses.
Speicher: Bei sehr großen Ergebnismengen kann das vollständige Einlesen aller Werte in ein Array speicherintensiv sein. In solchen Fällen kann eine zeilenweise Verarbeitung mit pg_fetch_row() in einer Schleife vorzuziehen sein.