Start · Sprachen · PHP · Referenz · db2_columns

db2_columns

Funktion

Liefert ein Ergebnis-Handle mit Spalten und zugehörigen Metadaten einer Tabelle aus einer IBM DB2-, Cloudscape- oder Apache Derby-Datenbank.

seit PHP 5.1.0 Kategorie: db

Signatur

db2_columns(resource $connection, ?string $qualifier = null, ?string $schema = null, ?string $table_name = null, ?string $column_name = null): resource|false

Beschreibung

db2_columns() gibt ein Ergebnis-Handle zurück, das Metadaten zu den Spalten einer oder mehrerer Tabellen enthält. Die Funktion ist Teil der IBM DB2-Erweiterung (ibm_db2) und ermöglicht es, Tabellenstruktur-Informationen programmatisch abzufragen, ohne direkt SQL-Katalogtabellen zu bemühen.

Das zurückgegebene Ergebnis-Handle kann mit den üblichen DB2-Fetch-Funktionen wie db2_fetch_assoc() oder db2_fetch_row() iteriert werden. Jede Zeile enthält Informationen wie den Spaltenname, Datentyp, Länge, ob NULL-Werte erlaubt sind und weitere Metadaten gemäß ODBC-Standard.

Die Parameter qualifier, schema, table_name und column_name unterstützen das SQL-Suchmuster % als Wildcard. Wird null übergeben, werden die entsprechenden Filter ignoriert.

Typische Anwendungsfälle sind Datenbank-Introspection, ORM-Generierung, automatische Formular-Erzeugung oder Dokumentationstools, die die Struktur einer Datenbank dynamisch auslesen müssen.

Parameter

Name Typ Default Beschreibung
$connection Pflicht resource Eine aktive IBM DB2-Datenbankverbindung, die von db2_connect() oder db2_pconnect() zurückgegeben wurde.
$qualifier ?string null Der Qualifier für DB2-Datenbanken auf OS/390- oder z/OS-Systemen. Für andere Datenbanken null übergeben.
$schema ?string null Das Schema, in dem sich die gesuchte Tabelle befindet. Unterstützt % als Wildcard. Bei null wird kein Schema-Filter angewendet.
$table_name ?string null Der Name der Tabelle, deren Spalten abgefragt werden sollen. Unterstützt % als Wildcard. Bei null werden Spalten aller Tabellen zurückgegeben.
$column_name ?string null Schränkt die Ergebnisse auf Spalten mit diesem Namen ein. Unterstützt % als Wildcard. Bei null werden alle Spalten zurückgegeben.

Rückgabewert

Typ
resource|false
Beschreibung
Gibt ein gültiges Ergebnis-Handle (Statement-Ressource) zurück, das mit DB2-Fetch-Funktionen ausgelesen werden kann. Bei einem Fehler wird false zurückgegeben.

Beispiele

Alle Spalten einer bestimmten Tabelle auslesen

<?php
$conn = db2_connect('SAMPLE', 'db2inst1', 'secret');

if ($conn) {
    $result = db2_columns($conn, null, 'DB2INST1', 'EMPLOYEE', null);

    if ($result) {
        while ($row = db2_fetch_assoc($result)) {
            printf(
                "Spalte: %-20s | Typ: %-10s | Länge: %d | Nullable: %s\n",
                $row['COLUMN_NAME'],
                $row['TYPE_NAME'],
                $row['COLUMN_SIZE'],
                $row['NULLABLE'] ? 'Ja' : 'Nein'
            );
        }
        db2_free_result($result);
    } else {
        echo "Fehler beim Abrufen der Spalten-Metadaten.\n";
    }

    db2_close($conn);
} else {
    echo "Verbindung fehlgeschlagen: " . db2_conn_errormsg() . "\n";
}
Spalte: EMPNO | Typ: CHAR | Länge: 6 | Nullable: Nein Spalte: FIRSTNME | Typ: VARCHAR | Länge: 12 | Nullable: Nein Spalte: MIDINIT | Typ: CHAR | Länge: 1 | Nullable: Ja ...

Spalten mit Wildcard-Suche über alle Tabellen eines Schemas

<?php
$conn = db2_connect('SAMPLE', 'db2inst1', 'secret');

if ($conn) {
    // Alle Spalten, deren Name mit 'ID' endet, im Schema 'MYAPP'
    $result = db2_columns($conn, null, 'MYAPP', '%', '%ID');

    $columns = [];
    while ($row = db2_fetch_assoc($result)) {
        $columns[] = [
            'table'  => $row['TABLE_NAME'],
            'column' => $row['COLUMN_NAME'],
            'type'   => $row['TYPE_NAME'],
        ];
    }
    db2_free_result($result);

    foreach ($columns as $col) {
        echo "{$col['table']}.{$col['column']} ({$col['type']})\n";
    }

    db2_close($conn);
}
ORDERS.ORDER_ID (INTEGER) CUSTOMERS.CUSTOMER_ID (INTEGER) PRODUCTS.PRODUCT_ID (INTEGER) ...

// Wichtig · Fallstricke

Wichtige Spalten im Ergebnis-Handle: Das Ergebnis enthält u. a. TABLE_CAT, TABLE_SCHEM, TABLE_NAME, COLUMN_NAME, DATA_TYPE, TYPE_NAME, COLUMN_SIZE, NULLABLE, REMARKS und COLUMN_DEF (Standard-Wert).

Groß-/Kleinschreibung: Schema- und Tabellennamen in DB2 sind standardmäßig case-sensitiv in Großbuchstaben gespeichert. Werden Kleinbuchstaben übergeben, kann es zu leeren Ergebnissen kommen — daher am besten strtoupper() verwenden.

Ressourcen freigeben: Nach der Verwendung sollte das Ergebnis-Handle mit db2_free_result() explizit freigegeben werden, um Speicher zu sparen.