Signatur
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
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";
}
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);
}
// 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.