Signatur
Beschreibung
mysql_xdevapi\ExecutionStatus ist eine Klasse der MySQL X DevAPI-Erweiterung für PHP. Sie kapselt Statusinformationen, die nach der Ausführung einer asynchronen Datenbankoperation zurückgeliefert werden – etwa nach dem Ausführen von DML-Anweisungen (INSERT, UPDATE, DELETE).
Über Objekte dieser Klasse können Entwickler erfahren, wie viele Zeilen durch eine Operation betroffen wurden, wie viele Dokumente eingefügt wurden oder ob Warnungen aufgetreten sind. Dies ist besonders nützlich, wenn im asynchronen Ausführungsmodell keine sofortige Rückmeldung vorliegt und der Status explizit abgefragt werden muss.
Die Klasse wird typischerweise nicht direkt instanziiert, sondern als Rückgabewert asynchroner Methoden des X DevAPI-Frameworks empfangen, z. B. nach dem Ausführen von Statements über eine Session oder ein Schema. Sie gehört zur mysql_xdevapi-Erweiterung, die das MySQL X Protocol implementiert und ab PHP 8.0 verfügbar ist.
Da es sich um eine interne Statusklasse handelt, sollte ihr Inhalt nur lesend ausgewertet werden. Die wichtigsten Eigenschaften umfassen die Anzahl der betroffenen Zeilen, die Anzahl gefundener Zeilen sowie etwaige Warnungen.
Beispiele
ExecutionStatus nach einem Table-Update auslesen
<?php
// Verbindung zur MySQL-Datenbank via X DevAPI herstellen
$session = mysql_xdevapi\getSession('mysqlx://user:password@localhost');
$schema = $session->getSchema('testdb');
$table = $schema->getTable('users');
// UPDATE ausführen – liefert ein Result-Objekt zurück
$result = $table->update()
->set('status', 'active')
->where('id > 0')
->execute();
// ExecutionStatus über das Result-Objekt abrufen
$status = $result->getAffectedItemsCount();
echo 'Betroffene Zeilen: ' . $status . PHP_EOL;
$warnings = $result->getWarningsCount();
echo 'Anzahl Warnungen: ' . $warnings . PHP_EOL;
$session->close();
ExecutionStatus nach einem Collection-Insert prüfen
<?php
$session = mysql_xdevapi\getSession('mysqlx://user:password@localhost');
$schema = $session->getSchema('testdb');
$collection = $schema->getCollection('articles');
// Mehrere Dokumente einfügen
$result = $collection->add(
['title' => 'Artikel 1', 'published' => true],
['title' => 'Artikel 2', 'published' => false]
)->execute();
// Anzahl der eingefügten Dokumente aus dem Status lesen
$inserted = $result->getAffectedItemsCount();
echo 'Eingefügte Dokumente: ' . $inserted . PHP_EOL;
// Generierte IDs der neuen Dokumente ausgeben
$ids = $result->getGeneratedIds();
foreach ($ids as $id) {
echo 'Neue Dokument-ID: ' . $id . PHP_EOL;
}
$session->close();
// Wichtig · Fallstricke
Verfügbarkeit: Die mysql_xdevapi-Erweiterung muss explizit in der PHP-Installation aktiviert sein. Sie ist nicht standardmäßig aktiv und erfordert die PECL-Erweiterung sowie eine MySQL-Server-Version >= 8.0 mit aktiviertem X Protocol (Port 33060).
Kein direktes Instantiieren: ExecutionStatus-Objekte werden intern vom Framework erzeugt. Ein eigenes new mysql_xdevapi\ExecutionStatus() ist nicht vorgesehen und führt zu einem Fehler.
Dokumentation: Die offizielle PHP-Dokumentation zu einzelnen Methoden der X DevAPI-Klassen ist teils unvollständig. Es empfiehlt sich, zusätzlich die MySQL X DevAPI Userguide zu konsultieren.