Start · Sprachen · PHP · Referenz · cubrid_schema

cubrid_schema

Funktion

Gibt Schema-Informationen aus einer CUBRID-Datenbank zurück, z. B. Tabellenstruktur, Indizes oder Constraints.

seit PHP 8.3.1 Kategorie: db

Signatur

cubrid_schema(resource $conn_identifier, int $schema_type, string $class_name = '', string $attr_name = ''): array|false

Beschreibung

cubrid_schema() ermöglicht es, Metadaten einer CUBRID-Datenbank abzufragen. Über den Parameter schema_type wird gesteuert, welche Art von Schema-Information zurückgegeben werden soll – etwa Klassen (Tabellen), Attribute (Spalten), Methoden, Trigger, Primärschlüssel oder Fremdschlüssel.

Die Funktion gibt ein zweidimensionales Array zurück, dessen Struktur vom gewählten schema_type abhängt. Für Spalteninformationen wird beispielsweise Name, Typ, Standardwert und Nullable-Status zurückgegeben.

Die möglichen Werte für schema_type sind als vordefinierte CUBRID-Konstanten verfügbar, z. B. CUBRID_SCH_CLASS, CUBRID_SCH_ATTRIBUTE, CUBRID_SCH_PRIMARY_KEY, CUBRID_SCH_IMPORTED_KEYS u. v. m.

Diese Funktion ist besonders nützlich für Datenbanktools, ORMs oder Diagnose-Skripte, die zur Laufzeit Informationen über die Datenbankstruktur benötigen, ohne rohe SQL-Systemabfragen formulieren zu müssen.

Parameter

Name Typ Default Beschreibung
$conn_identifier Pflicht resource Eine aktive CUBRID-Verbindungsressource, die mit cubrid_connect() oder cubrid_connect_with_url() erzeugt wurde.
$schema_type Pflicht int Art der gewünschten Schema-Information. Muss eine der CUBRID-Konstanten sein, z. B. CUBRID_SCH_CLASS, CUBRID_SCH_ATTRIBUTE, CUBRID_SCH_METHOD, CUBRID_SCH_PRIMARY_KEY, CUBRID_SCH_IMPORTED_KEYS, CUBRID_SCH_EXPORTED_KEYS etc.
$class_name string Name der Tabelle (Klasse in CUBRID-Terminologie), auf die sich die Abfrage beziehen soll. Wird leer gelassen, werden Informationen zu allen Klassen zurückgegeben (soweit vom Typ unterstützt).
$attr_name string Name des Attributs (Spalte), auf das die Abfrage eingeschränkt werden soll. Nur bei bestimmten schema_type-Werten wie CUBRID_SCH_ATTRIBUTE relevant.

Rückgabewert

Typ
array|false
Beschreibung
Gibt bei Erfolg ein zweidimensionales Array mit den angeforderten Schema-Informationen zurück. Die genaue Struktur der inneren Arrays hängt vom gewählten schema_type ab. Im Fehlerfall wird false zurückgegeben.

Beispiele

Alle Tabellen (Klassen) der Datenbank auflisten

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
if (!$conn) {
    die('Verbindung fehlgeschlagen');
}

$classes = cubrid_schema($conn, CUBRID_SCH_CLASS);
if ($classes !== false) {
    foreach ($classes as $class) {
        echo 'Tabelle: ' . $class['NAME'] . PHP_EOL;
    }
} else {
    echo 'Schema-Abfrage fehlgeschlagen.';
}

cubrid_disconnect($conn);
Tabelle: athlete Tabelle: event Tabelle: game Tabelle: nation ...

Spalteninformationen einer bestimmten Tabelle abrufen

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
if (!$conn) {
    die('Verbindung fehlgeschlagen');
}

$attributes = cubrid_schema($conn, CUBRID_SCH_ATTRIBUTE, 'athlete');
if ($attributes !== false) {
    foreach ($attributes as $attr) {
        echo 'Spalte: ' . $attr['ATTR_NAME']
            . ' | Typ: ' . $attr['TYPE']
            . ' | Nullable: ' . ($attr['IS_NULL'] ? 'Ja' : 'Nein')
            . PHP_EOL;
    }
} else {
    echo 'Schema-Abfrage fehlgeschlagen.';
}

cubrid_disconnect($conn);
Spalte: code | Typ: INTEGER | Nullable: Nein Spalte: name | Typ: VARCHAR | Nullable: Ja Spalte: gender | Typ: CHAR | Nullable: Ja ...

Primärschlüssel einer Tabelle ermitteln

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
if (!$conn) {
    die('Verbindung fehlgeschlagen');
}

$primaryKeys = cubrid_schema($conn, CUBRID_SCH_PRIMARY_KEY, 'athlete');
if ($primaryKeys !== false) {
    foreach ($primaryKeys as $pk) {
        echo 'PK-Spalte: ' . $pk['ATTR_NAME'] . ' | Key-Name: ' . $pk['KEY_NAME'] . PHP_EOL;
    }
} else {
    echo 'Schema-Abfrage fehlgeschlagen.';
}

cubrid_disconnect($conn);
PK-Spalte: code | Key-Name: pk_athlete_code

// Wichtig · Fallstricke

Konstanten für schema_type: Die vollständige Liste der unterstützten Konstanten umfasst u. a.:

  • CUBRID_SCH_CLASS – alle Tabellen
  • CUBRID_SCH_VCLASS – alle Views
  • CUBRID_SCH_ATTRIBUTE – Spalteninformationen
  • CUBRID_SCH_CLASS_ATTRIBUTE – Klassen-Attribute
  • CUBRID_SCH_METHOD – Methoden
  • CUBRID_SCH_CLASS_METHOD – Klassenmethoden
  • CUBRID_SCH_PRIMARY_KEY – Primärschlüssel
  • CUBRID_SCH_IMPORTED_KEYS – Fremdschlüssel (eingehend)
  • CUBRID_SCH_EXPORTED_KEYS – Fremdschlüssel (ausgehend)
  • CUBRID_SCH_TRIGGER – Trigger

Die genaue Verfügbarkeit der Konstanten hängt von der installierten CUBRID-Erweiterungsversion ab. Die CUBRID PHP-Erweiterung muss aktiviert sein (extension=cubrid.so bzw. cubrid.dll).

Da diese Funktion Datenbankmetadaten zurückgibt, sollte sie nicht in produktionskritischen Request-Pfaden eingesetzt werden, da Schema-Abfragen ressourcenintensiv sein können. Ergebnisse sollten ggf. gecacht werden.