Start · Sprachen · PHP · Referenz · mysql_xdevapi\Warning

mysql_xdevapi\Warning

Klasse

Repräsentiert eine von einer MySQL X DevAPI-Operation zurückgegebene Warnung und stellt Informationen über Schweregrad, Code und Meldungstext bereit.

seit PHP 7.0.0 Kategorie: db

Signatur

class mysql_xdevapi\Warning

Beschreibung

Die Klasse mysql_xdevapi\Warning kapselt eine einzelne Warnung, die vom MySQL-Server als Reaktion auf eine über die X DevAPI ausgeführte Operation zurückgegeben wurde. Warnungen entstehen typischerweise bei Operationen wie Datentyp-Konvertierungen, impliziten Kürzungen oder nicht schwerwiegenden Protokollverstößen, die den Erfolg der Operation nicht verhindern, aber auf potenziell unerwartetes Verhalten hinweisen.

Objekte dieser Klasse werden nicht direkt instanziiert, sondern entstehen als Ergebnis der Methode getWarnings(), die auf Ergebnisobjekten (z. B. mysql_xdevapi\Result oder mysql_xdevapi\DocResult) verfügbar ist. Jedes Warning-Objekt besitzt drei öffentliche Eigenschaften: level (Schweregrad), code (numerischer Fehlercode) und message (menschenlesbarer Text der Warnung).

Die Auswertung von Warnungen ist besonders in Produktivumgebungen sinnvoll, wo fehlertolerantes Verhalten des Datenbankservers – etwa bei INSERT- oder UPDATE-Operationen mit Typkonvertierungen – protokolliert oder überwacht werden soll. Durch Iteration über die Warnungsliste können Entwickler gezielt auf bestimmte Warn-Codes reagieren oder Warnungen in ein Logging-System schreiben.

Beispiele

Warnungen nach einer INSERT-Operation auslesen

<?php
// Verbindung zur MySQL-Datenbank über X DevAPI herstellen
$session = mysql_xdevapi\getSession('mysqlx://user:password@localhost');
$schema = $session->getSchema('testdb');
$collection = $schema->getCollection('meine_sammlung');

// Eine Operation ausführen, die ggf. Warnungen erzeugt
$result = $collection->add('{"name": "Test", "alter": -1}')->execute();

// Anzahl der Warnungen prüfen
$anzahl = $result->getWarningsCount();
echo "Anzahl Warnungen: $anzahl\n";

// Alle Warnungen iterieren
foreach ($result->getWarnings() as $warnung) {
    /** @var mysql_xdevapi\Warning $warnung */
    echo "Level  : " . $warnung->level   . "\n";
    echo "Code   : " . $warnung->code    . "\n";
    echo "Meldung: " . $warnung->message . "\n";
    echo str_repeat('-', 40) . "\n";
}
?>
Anzahl Warnungen: 1 Level : 2 Code : 1264 Meldung: Out of range value for column 'alter' at row 1 ----------------------------------------

Gezielt auf bestimmte Warn-Codes reagieren

<?php
$session = mysql_xdevapi\getSession('mysqlx://user:password@localhost');
$schema  = $session->getSchema('testdb');
$table   = $schema->getTable('benutzer');

// Update ausführen
$result = $table->update()
    ->set('email', 'ungueltige-email')
    ->where('id = 42')
    ->execute();

// Relevante Warnungen filtern und protokollieren
foreach ($result->getWarnings() as $warnung) {
    if ($warnung->level >= 2) {
        // Nur echte Fehler-Warnungen (Level 2 = Warning, Level 1 = Note)
        error_log(sprintf(
            '[MySQL Warning] Code %d: %s',
            $warnung->code,
            $warnung->message
        ));
    }
}

echo "Operation abgeschlossen.\n";
?>
Operation abgeschlossen.

// Wichtig · Fallstricke

Eigenschaften: Warning-Objekte verfügen über drei öffentliche, schreibgeschützte Eigenschaften:

  • level (int) – Schweregrad der Warnung (1 = Note, 2 = Warning).
  • code (int) – Numerischer MySQL-Fehlercode (z. B. 1264 für Out of range).
  • message (string) – Beschreibender Text der Warnung.

Voraussetzungen: Die X DevAPI-Erweiterung (mysql_xdevapi) muss installiert und aktiviert sein. Sie setzt einen MySQL-Server ab Version 5.7.12 bzw. 8.0+ mit aktiviertem X Plugin voraus.

Nicht direkt instanziierbar: Objekte dieser Klasse werden ausschließlich intern durch die Erweiterung erzeugt und über getWarnings() bereitgestellt. Ein direkter Aufruf von new Warning() ist nicht vorgesehen.