Start · Sprachen · PHP · Referenz · mysql_xdevapi\Result

mysql_xdevapi\Result

Klasse

Repräsentiert das Ergebnis einer X DevAPI-Operation (z. B. INSERT, UPDATE, DELETE) auf einer MySQL-Datenbank.

seit PHP 8.0.11 Kategorie: db

Signatur

class mysql_xdevapi\Result

Beschreibung

mysql_xdevapi\Result ist eine Klasse der MySQL X DevAPI-Erweiterung für PHP. Sie kapselt das Ergebnis von Schreiboperationen (z. B. INSERT, UPDATE, DELETE) auf einer MySQL-Kollektion oder -Tabelle und stellt Methoden bereit, um Metadaten über die durchgeführte Operation auszulesen.

Über diese Klasse lässt sich ermitteln, wie viele Zeilen bzw. Dokumente durch die Operation betroffen wurden (getAffectedItemsCount()), welche automatisch generierten Primärschlüssel (getGeneratedIds()) erzeugt wurden, und welche Warnungen der Server zurückgegeben hat (getWarnings(), getWarningsCount()).

Eine Instanz dieser Klasse wird niemals direkt erstellt, sondern als Rückgabewert von Operationen wie Collection::add(), Table::insert(), Table::update() oder Table::delete() zurückgegeben.

Die Klasse ist Teil des X DevAPI-Protokolls, das eine moderne, dokumentenorientierte und typsichere Alternative zum klassischen MySQL-Protokoll bietet und das Arbeiten mit JSON-Dokumenten und relationalen Daten vereinheitlicht.

Beispiele

INSERT-Operation auf einer Kollektion und Auswertung des Ergebnisses

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

$schema = $session->getSchema('testdb');
$collection = $schema->getCollection('users');

// Dokumente einfügen
/** @var mysql_xdevapi\Result $result */
$result = $collection->add([
    ['name' => 'Alice', 'age' => 30],
    ['name' => 'Bob',   'age' => 25],
])->execute();

// Anzahl der betroffenen Dokumente
echo 'Betroffene Dokumente: ' . $result->getAffectedItemsCount() . PHP_EOL;

// Automatisch generierte IDs
$ids = $result->getGeneratedIds();
echo 'Generierte IDs: ' . implode(', ', $ids) . PHP_EOL;

// Warnungen des Servers prüfen
$warnCount = $result->getWarningsCount();
if ($warnCount > 0) {
    foreach ($result->getWarnings() as $warning) {
        echo 'Warnung: ' . $warning->getMessage() . PHP_EOL;
    }
}
Betroffene Dokumente: 2 Generierte IDs: 00006289a8100000000000000001, 00006289a8100000000000000002

UPDATE-Operation auf einer Tabelle und Prüfung der betroffenen Zeilen

<?php
$session = mysql_xdevapi\getSession('mysqlx://user:password@localhost');

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

// Preis erhöhen für alle Produkte einer bestimmten Kategorie
/** @var mysql_xdevapi\Result $result */
$result = $table->update()
    ->set('price', $table->expr('price * 1.1'))
    ->where('category = :cat')
    ->bind(['cat' => 'electronics'])
    ->execute();

echo 'Aktualisierte Zeilen: ' . $result->getAffectedItemsCount() . PHP_EOL;
Aktualisierte Zeilen: 5

// Wichtig · Fallstricke

Verfügbarkeit: Die mysql_xdevapi-Erweiterung ist eine PECL-Erweiterung und standardmäßig nicht in PHP enthalten. Sie muss separat installiert werden (pecl install mysql_xdevapi) und setzt die MySQL X Protocol-Unterstützung sowie MySQL 5.7.12+ oder MySQL 8.0+ voraus.

Methoden der Klasse: Die wichtigsten Methoden sind getAffectedItemsCount() (Anzahl betroffener Datensätze), getGeneratedIds() (automatisch generierte Dokument-IDs als Array), getWarnings() (Array von mysql_xdevapi\Warning-Objekten) und getWarningsCount() (Anzahl der Warnungen).

Unterschied zu DocResult/RowResult: Result wird für Schreiboperationen verwendet, während DocResult und RowResult für Leseoperationen (SELECT/find) genutzt werden und Iterationsmethoden für Datensätze bereitstellen.