Signatur
Beschreibung
db2_tables() fragt den Systemkatalog einer verbundenen Datenbank ab und gibt ein Resultset zurück, das Informationen zu den vorhandenen Tabellen, Views, Aliasen und Synonymen enthält. Die Funktion ist besonders nützlich für Datenbankwerkzeuge, ORM-Frameworks oder Administrationsskripte, die die Struktur einer Datenbank dynamisch erkunden müssen.
Das zurückgegebene Resultset kann mit Standard-DB2-Fetch-Funktionen wie db2_fetch_assoc(), db2_fetch_array() oder db2_fetch_object() durchlaufen werden. Jede Zeile enthält Spalten wie TABLE_CAT, TABLE_SCHEM, TABLE_NAME, TABLE_TYPE und REMARKS.
Durch die optionalen Parameter schema, table_name und table_type lässt sich die Ergebnismenge gezielt einschränken. Als Platzhalter können dabei % (beliebige Zeichenfolge) und _ (einzelnes Zeichen) verwendet werden, sofern der Datenbankserver diese Wildcards unterstützt.
Die Funktion steht nur zur Verfügung, wenn die IBM DB2-, Cloudscape- oder Apache Derby-Erweiterung (ibm_db2) installiert und aktiviert ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $connection Pflicht | resource | Eine gültige DB2-Verbindungsressource, die zuvor mit db2_connect() oder db2_pconnect() erstellt wurde. |
|
| $qualifier | string|null | null | Der Katalogname (Qualifier) auf OS/390- oder z/OS-Systemen. Auf anderen Plattformen wird null übergeben oder der Parameter weggelassen. |
| $schema | string|null | null | Schränkt das Ergebnis auf Tabellen eines bestimmten Schemas ein. Unterstützt Wildcards (% und _). Bei null werden alle Schemas berücksichtigt. |
| $table_name | string|null | null | Schränkt das Ergebnis auf Tabellen mit einem bestimmten Namen ein. Unterstützt Wildcards (% und _). Bei null werden alle Tabellennamen berücksichtigt. |
| $table_type | string|null | null | Kommagetrennte Liste von Tabellentypen, z. B. 'TABLE,VIEW,ALIAS'. Häufige Werte sind TABLE, VIEW, ALIAS und SYNONYM. Bei null werden alle Typen zurückgeliefert. |
Rückgabewert
false zurückgegeben.Beispiele
Alle Tabellen eines Schemas auflisten
<?php
$conn = db2_connect('SAMPLE', 'db2user', 'geheim');
if ($conn) {
$stmt = db2_tables($conn, null, 'DB2ADMIN', null, 'TABLE');
if ($stmt) {
while ($row = db2_fetch_assoc($stmt)) {
echo 'Schema: ' . $row['TABLE_SCHEM']
. ' | Tabelle: ' . $row['TABLE_NAME']
. ' | Typ: ' . $row['TABLE_TYPE'] . PHP_EOL;
}
db2_free_result($stmt);
} else {
echo 'Fehler beim Abrufen der Tabellen: ' . db2_stmt_errormsg();
}
db2_close($conn);
} else {
echo 'Verbindungsfehler: ' . db2_conn_errormsg();
}
?>
Tabellen und Views mit Wildcard-Suche finden
<?php
$conn = db2_connect('SAMPLE', 'db2user', 'geheim');
if ($conn) {
// Alle Tabellen/Views, deren Name mit 'ORD' beginnt
$stmt = db2_tables($conn, null, '%', 'ORD%', 'TABLE,VIEW');
if ($stmt) {
echo sprintf("%-30s %-20s %s\n", 'Tabellenname', 'Schema', 'Typ');
echo str_repeat('-', 60) . PHP_EOL;
while ($row = db2_fetch_assoc($stmt)) {
echo sprintf(
"%-30s %-20s %s\n",
$row['TABLE_NAME'],
$row['TABLE_SCHEM'],
$row['TABLE_TYPE']
);
}
db2_free_result($stmt);
}
db2_close($conn);
}
?>
// Wichtig · Fallstricke
Verfügbarkeit: db2_tables() erfordert die PHP-Erweiterung ibm_db2, die separat installiert werden muss. Sie ist nicht Teil der Standard-PHP-Distribution.
Spaltennamen im Resultset: Das zurückgegebene Resultset enthält immer die Spalten TABLE_CAT, TABLE_SCHEM, TABLE_NAME, TABLE_TYPE und REMARKS. Weitere Spalten können je nach Datenbankplattform vorhanden sein.
Ressourcen freigeben: Nach der Verarbeitung sollte die Anweisungsressource mit db2_free_result() freigegeben werden, um Arbeitsspeicher zu schonen.
Zugriffsrechte: Das verwendete Datenbankbenutzerkonto benötigt ausreichende Berechtigungen, um den Systemkatalog abfragen zu dürfen. Andernfalls kann das Resultset leer sein, ohne dass ein expliziter Fehler zurückgegeben wird.