Start · Sprachen · PHP · Referenz · mysql_xdevapi\ColumnResult

mysql_xdevapi\ColumnResult

Klasse

Liefert Metadaten und Typinformationen über eine einzelne Spalte eines <code>mysql_xdevapi</code>-Abfrageergebnisses.

seit PHP 7.1.0 Kategorie: db

Signatur

class mysql_xdevapi\ColumnResult

Beschreibung

mysql_xdevapi\ColumnResult repräsentiert eine einzelne Spalte innerhalb eines Ergebnisses, das von einer MySQL-X-DevAPI-Abfrage zurückgegeben wird. Objekte dieser Klasse werden typischerweise nicht direkt instanziiert, sondern über Methoden wie RowResult::getColumn() oder RowResult::getColumns() bezogen.

Über ein ColumnResult-Objekt lassen sich sämtliche Metadaten einer Spalte abfragen: Name, Originalname, Tabellenname, Schema, Datenbankname, Zeichensatz, Länge, Typ, Flags und Genauigkeit (Fractional Digits). Dies ist besonders nützlich, wenn das Schema der zurückgegebenen Daten zur Laufzeit unbekannt ist oder dynamisch verarbeitet werden muss.

Die Klasse gehört zur X-DevAPI-Erweiterung (mysql_xdevapi), die eine moderne, dokumentenorientierte Schnittstelle zu MySQL 8.0+ bereitstellt und sowohl relationale als auch NoSQL-Operationen unterstützt. Sie ersetzt die veralteten mysql_*- und mysqli_*-Erweiterungen für X-Protocol-basierte Verbindungen.

Typische Anwendungsfälle sind die dynamische Ergebnisauswertung, ORM-Implementierungen oder die Erzeugung generischer Export-/Anzeige-Komponenten, die ohne fest codierte Spaltenkenntnis auskommen müssen.

Beispiele

Spaltenmetadaten aus einem SELECT-Ergebnis auslesen

<?php
// Verbindung zur MySQL-Datenbank über X-Protocol aufbauen
$session = mysql_xdevapi\getSession('mysqlx://user:password@localhost');

$schema = $session->getSchema('testdb');
$table  = $schema->getTable('employees');

// Einfache SELECT-Abfrage ausführen
$result = $table->select('id', 'name', 'salary')->execute();

// Alle ColumnResult-Objekte abrufen
$columns = $result->getColumns();

foreach ($columns as $column) {
    echo 'Spaltenname:      ' . $column->getColumnName()    . PHP_EOL;
    echo 'Tabellenname:     ' . $column->getTableName()     . PHP_EOL;
    echo 'Schema:           ' . $column->getSchemaName()    . PHP_EOL;
    echo 'Typ:              ' . $column->getType()          . PHP_EOL;
    echo 'Länge:            ' . $column->getLength()        . PHP_EOL;
    echo 'Nachkommastellen: ' . $column->getFractionalDigits() . PHP_EOL;
    echo '---' . PHP_EOL;
}

$session->close();
Spaltenname: id Tabellenname: employees Schema: testdb Typ: 5 Länge: 11 Nachkommastellen: 0 --- Spaltenname: name Tabellenname: employees Schema: testdb Typ: 7 Länge: 765 Nachkommastellen: 0 --- ...

Dynamischer CSV-Export mit Spalteninformationen

<?php
$session = mysql_xdevapi\getSession('mysqlx://user:password@localhost');
$result  = $session->sql('SELECT id, name, salary FROM testdb.employees')->execute();

$columns = $result->getColumns();

// Kopfzeile aus Spaltennamen erzeugen
$header = array_map(fn($col) => $col->getColumnName(), $columns);
echo implode(';', $header) . PHP_EOL;

// Datenzeilen ausgeben
while ($row = $result->fetchOne()) {
    echo implode(';', (array) $row) . PHP_EOL;
}

$session->close();
id;name;salary 1;Alice;55000 2;Bob;62000 ...

// Wichtig · Fallstricke

Verfügbarkeit: Die mysql_xdevapi-Erweiterung muss explizit kompiliert bzw. als PECL-Paket installiert werden (pecl install mysql_xdevapi). Sie ist nicht standardmäßig in PHP enthalten.

MySQL-Version: Es wird mindestens MySQL 8.0 mit aktiviertem X-Plugin benötigt. Der Standard-Port für das X-Protocol ist 33060, nicht 3306.

Typen: Die von getType() zurückgegebenen Werte sind ganzzahlige Konstanten (z. B. mysql_xdevapi\ColumnResult::TYPE_INT). Ein Mapping auf lesbare Namen ist manuell erforderlich, wenn diese dargestellt werden sollen.

Zeichensatz: getCollationName() und getCharacterSetName() liefern nur dann sinnvolle Werte, wenn die jeweilige Spalte einen String-Typ hat; bei numerischen Spalten können leere Strings zurückgegeben werden.