Start · Sprachen · PHP · Referenz · cubrid_field_table

cubrid_field_table

Funktion

Gibt den Namen der Tabelle zurück, zu der ein bestimmtes Feld eines CUBRID-Abfrageergebnisses gehört.

seit PHP 8.3.1 Kategorie: db

Signatur

cubrid_field_table(resource $result, int $field_offset): string|false

Beschreibung

cubrid_field_table() ermittelt den Tabellennamen, aus dem ein bestimmtes Feld in einem CUBRID-Abfrageergebnis stammt. Dies ist besonders nützlich bei JOIN-Abfragen, bei denen mehrere Tabellen beteiligt sind und Spalten mit gleichem Namen aus unterschiedlichen Tabellen stammen können.

Der Parameter field_offset ist nullbasiert, d. h. das erste Feld hat den Index 0. Mit dieser Funktion lässt sich im Nachhinein feststellen, welcher Tabelle ein zurückgegebenes Feld zugeordnet ist, ohne die ursprüngliche SQL-Abfrage analysieren zu müssen.

Die Funktion ist Teil der CUBRID-Erweiterung für PHP und bietet damit ähnliche Metadaten-Funktionalität wie mysql_field_table() aus der MySQL-Erweiterung. Sie ist sinnvoll, wenn man Abfrageergebnisse dynamisch verarbeitet oder Debugging-Informationen über die Struktur des Resultsets benötigt.

Parameter

Name Typ Default Beschreibung
$result Pflicht resource Das CUBRID-Ergebnis-Handle, wie es von cubrid_query(), cubrid_execute() o. Ä. zurückgegeben wird.
$field_offset Pflicht int Der nullbasierte Index des Feldes, dessen Tabellenname ermittelt werden soll. 0 bezeichnet das erste Feld im Ergebnis.

Rückgabewert

Typ
string|false
Beschreibung
Gibt den Tabellennamen des angegebenen Feldes als string zurück. Bei einem Fehler (z. B. ungültiger field_offset oder ungültiges result-Handle) wird false zurückgegeben.

Beispiele

Tabellennamen eines Feldes aus einfacher Abfrage ermitteln

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');

$result = cubrid_query('SELECT athlete_code, name, nation_code FROM athlete LIMIT 5', $conn);

if ($result) {
    $num_fields = cubrid_num_fields($result);
    for ($i = 0; $i < $num_fields; $i++) {
        $table = cubrid_field_table($result, $i);
        $field = cubrid_field_name($result, $i);
        echo "Feld '$field' gehört zur Tabelle: $table\n";
    }
    cubrid_free_result($result);
}

cubrid_disconnect($conn);
Feld 'athlete_code' gehört zur Tabelle: athlete Feld 'name' gehört zur Tabelle: athlete Feld 'nation_code' gehört zur Tabelle: athlete

Tabellenzuordnung bei einem JOIN auflösen

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');

$sql = 'SELECT a.name, a.nation_code, g.host_year, g.gold
        FROM athlete a
        JOIN game g ON a.athlete_code = g.athlete_code
        LIMIT 3';

$result = cubrid_query($sql, $conn);

if ($result) {
    $num_fields = cubrid_num_fields($result);
    echo "Feldübersicht:\n";
    for ($i = 0; $i < $num_fields; $i++) {
        $table = cubrid_field_table($result, $i);
        $field = cubrid_field_name($result, $i);
        echo sprintf("  [%d] %s.%s\n", $i, $table, $field);
    }
    cubrid_free_result($result);
}

cubrid_disconnect($conn);
Feldübersicht: [0] a.name [1] a.nation_code [2] g.host_year [3] g.gold

// Wichtig · Fallstricke

Achtung: Die CUBRID-PHP-Erweiterung muss installiert und aktiviert sein (extension=cubrid in der php.ini). Ohne diese Erweiterung steht die Funktion nicht zur Verfügung.

Der field_offset muss innerhalb des gültigen Bereichs liegen (0 bis cubrid_num_fields($result) - 1), andernfalls gibt die Funktion false zurück. Eine Fehlerprüfung ist daher empfehlenswert.

Bei der Verwendung von Tabellenaliasen in der SQL-Abfrage kann der zurückgegebene Tabellenname dem Alias entsprechen, nicht notwendigerweise dem physischen Tabellennamen. Dieses Verhalten sollte in der jeweiligen CUBRID-Version geprüft werden.