Signatur
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();
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();
// 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.