Signatur
Beschreibung
mysql_xdevapi\BaseResult ist das grundlegende Interface der MySQL X DevAPI (PECL-Extension mysql_xdevapi), das allen konkreten Ergebnisobjekten gemeinsame Funktionalität verleiht. Es wird von Interfaces wie Result und DocResult erweitert und bildet damit die Wurzel der Ergebnishierarchie.
Das Interface ermöglicht den einheitlichen Zugriff auf Warnungen (Warnings), die der MySQL-Server während einer Operation erzeugt hat. Warnungen sind nicht-fatale Hinweise des Servers, z. B. bei impliziten Typkonvertierungen oder abgeschnittenen Werten, und können mit getWarnings() bzw. getWarningsCount() abgerufen werden.
Da es sich um ein Interface handelt, wird es nicht direkt instanziiert. Es taucht als Typangabe in Funktionen auf, die mit beliebigen X-DevAPI-Ergebnissen arbeiten sollen – unabhängig davon, ob es sich um ein Dokument-, Row- oder reines Statusergebnis handelt.
Die X DevAPI ist der moderne Ansatz für den Zugriff auf MySQL 8.x und nutzt das X Protocol, das neben klassischen SQL-Operationen auch dokumentenorientierte NoSQL-Abfragen unterstützt.
Beispiele
Warnungen nach einer Collection-Operation auslesen
<?php
// Verbindung zur MySQL-Instanz via X Protocol
$session = mysql_xdevapi\getSession('mysqlx://user:pass@localhost');
$schema = $session->getSchema('testdb');
$collection = $schema->getCollection('users');
// Operation ausführen – kann Warnungen erzeugen
$result = $collection->add(['name' => 'Alice', 'age' => 30])->execute();
// BaseResult-Methoden: Warnungen prüfen
$count = $result->getWarningsCount();
echo "Anzahl Warnungen: $count\n";
foreach ($result->getWarnings() as $warning) {
echo sprintf(
"[Level %d / Code %d] %s\n",
$warning->level,
$warning->code,
$warning->message
);
}
$session->close();
BaseResult als Typdeklaration in eigener Hilfsfunktion
<?php
/**
* Gibt alle Warnungen eines beliebigen X-DevAPI-Ergebnisobjekts aus.
* Dank BaseResult als Typ funktioniert dies für Result, DocResult usw.
*/
function printWarnings(mysql_xdevapi\BaseResult $result): void
{
$count = $result->getWarningsCount();
if ($count === 0) {
echo "Keine Warnungen.\n";
return;
}
foreach ($result->getWarnings() as $w) {
echo "Warning [{$w->code}]: {$w->message}\n";
}
}
$session = mysql_xdevapi\getSession('mysqlx://user:pass@localhost');
$schema = $session->getSchema('testdb');
$table = $schema->getTable('orders');
$result = $table->select('id', 'total')->execute();
printWarnings($result);
$session->close();
// Wichtig · Fallstricke
PECL-Extension erforderlich: mysql_xdevapi ist keine Kern-Extension von PHP, sondern muss separat über PECL installiert werden (pecl install mysql_xdevapi). Sie setzt MySQL 8.0+ mit aktiviertem X Plugin sowie libmysqlxclient voraus.
Namespace: Alle Klassen und Interfaces befinden sich im Namespace mysql_xdevapi. Bei Typdeklarationen muss der vollständige Name mysql_xdevapi\BaseResult oder ein entsprechendes use-Statement verwendet werden.
Nicht verwechseln mit der veralteten ext/mysql- oder ext/mysqli-Extension. Die X DevAPI ist ein eigenständiges Protokoll und API-Design.