Start · Sprachen · PHP · Referenz · pg_field_name

pg_field_name

Funktion

Gibt den Namen (Spaltenbezeichnung) eines Feldes aus einem PostgreSQL-Ergebnis anhand seines Index zurück.

seit PHP 4.2.0 Kategorie: db

Signatur

pg_field_name(PgSql\Result $result, int $field): string

Beschreibung

pg_field_name() ermittelt den Namen einer Spalte in einem PostgreSQL-Abfrageergebnis. Der Feldname entspricht dem Spaltennamen, wie er in der SELECT-Abfrage definiert oder durch einen Alias vergeben wurde. Dies ist besonders nützlich, wenn die Struktur der Ergebnismenge dynamisch verarbeitet werden soll, ohne die Spaltennamen vorher zu kennen.

Die Funktion arbeitet gemeinsam mit pg_num_fields(), um alle Spaltennamen eines Ergebnisses zu iterieren. So lassen sich z. B. generische Export-Funktionen oder selbstbeschreibende Tabellenausgaben implementieren, ohne die SQL-Abfrage hart zu kodieren.

Der Index $field ist nullbasiert, d. h. die erste Spalte hat den Index 0. Wird ein ungültiger Index übergeben, gibt die Funktion einen Laufzeitfehler aus.

Parameter

Name Typ Default Beschreibung
$result Pflicht PgSql\Result Eine PostgreSQL-Ergebnis-Instanz, wie sie von pg_query(), pg_query_params() o. Ä. zurückgegeben wird.
$field Pflicht int Nullbasierter Index des Feldes, dessen Name abgerufen werden soll. Gültige Werte liegen zwischen 0 und pg_num_fields($result) - 1.

Rückgabewert

Typ
string
Beschreibung
Gibt den Namen des Feldes als Zeichenkette zurück. Bei einem ungültigen Index wird ein Fehler ausgelöst.

Beispiele

Alle Spaltennamen eines Abfrageergebnisses ausgeben

<?php
$conn = pg_connect('host=localhost dbname=testdb user=postgres password=secret');
if (!$conn) {
    die('Verbindung fehlgeschlagen.');
}

$result = pg_query($conn, 'SELECT id, vorname, nachname FROM kunden LIMIT 1');
if (!$result) {
    die('Abfrage fehlgeschlagen: ' . pg_last_error($conn));
}

$anzahlFelder = pg_num_fields($result);
echo "Gefundene Spalten: $anzahlFelder\n";

for ($i = 0; $i < $anzahlFelder; $i++) {
    echo "Spalte $i: " . pg_field_name($result, $i) . "\n";
}

pg_free_result($result);
pg_close($conn);
Gefundene Spalten: 3 Spalte 0: id Spalte 1: vorname Spalte 2: nachname

Dynamische HTML-Tabelle aus PostgreSQL-Ergebnis erzeugen

<?php
$conn = pg_connect('host=localhost dbname=testdb user=postgres password=secret');
$result = pg_query($conn, 'SELECT id, titel, preis FROM produkte LIMIT 5');

$anzahlFelder = pg_num_fields($result);

echo '<table border="1">';

// Kopfzeile mit Spaltennamen
echo '<tr>';
for ($i = 0; $i < $anzahlFelder; $i++) {
    echo '<th>' . htmlspecialchars(pg_field_name($result, $i)) . '</th>';
}
echo '</tr>';

// Datenzeilen
while ($zeile = pg_fetch_row($result)) {
    echo '<tr>';
    foreach ($zeile as $wert) {
        echo '<td>' . htmlspecialchars((string)$wert) . '</td>';
    }
    echo '</tr>';
}

echo '</table>';

pg_free_result($result);
pg_close($conn);

// Wichtig · Fallstricke

Versionshinweis: Ab PHP 8.1 ist der erste Parameter vom Typ PgSql\Result (ein echtes Objekt) statt der älteren Ressource. Code, der die Funktion mit einer Ressource aufruft, muss ggf. angepasst werden.

Der zurückgegebene Feldname wird stets in Kleinbuchstaben ausgegeben, sofern PostgreSQL die Spalte nicht mit Anführungszeichen und gemischter Groß-/Kleinschreibung definiert hat. SQL-Aliase wie SELECT preis AS "Verkaufspreis" werden als Feldname übernommen.

Bei ungültigem Index (z. B. negativer Wert oder Index >= pg_num_fields()) wird ein PHP-Fehler ausgelöst; eine Bereichsprüfung vor dem Aufruf ist empfehlenswert.