Signatur
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
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);
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);
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);
// Wichtig · Fallstricke
Konstanten für schema_type: Die vollständige Liste der unterstützten Konstanten umfasst u. a.:
CUBRID_SCH_CLASS– alle TabellenCUBRID_SCH_VCLASS– alle ViewsCUBRID_SCH_ATTRIBUTE– SpalteninformationenCUBRID_SCH_CLASS_ATTRIBUTE– Klassen-AttributeCUBRID_SCH_METHOD– MethodenCUBRID_SCH_CLASS_METHOD– KlassenmethodenCUBRID_SCH_PRIMARY_KEY– PrimärschlüsselCUBRID_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.