Start · Sprachen · PHP · Referenz · mysql_xdevapi\TableUpdate

mysql_xdevapi\TableUpdate

Klasse

Repräsentiert eine UPDATE-Anweisung für eine Tabelle im MySQL X DevAPI und ermöglicht das Aktualisieren von Datensätzen mit Filterung, Sortierung und Limit.

seit PHP 8.0.11 Kategorie: db

Signatur

class mysql_xdevapi\TableUpdate

Beschreibung

mysql_xdevapi\TableUpdate ist Teil der MySQL X DevAPI-Erweiterung und stellt eine fluent-interface-basierte Klasse dar, mit der UPDATE-SQL-Anweisungen auf Tabellen ausgeführt werden können. Instanzen dieser Klasse werden typischerweise über die Methode Table::update() erzeugt und nicht direkt instanziiert.

Die Klasse ermöglicht es, Spalten über set() zu setzen, die zu aktualisierenden Zeilen über where() einzuschränken, die Reihenfolge mit orderby() zu definieren und die Anzahl der zu aktualisierenden Datensätze mit limit() zu begrenzen. Die Ausführung erfolgt abschließend mit execute().

Diese Klasse eignet sich besonders für Anwendungen, die das MySQL-Protokoll X (Port 33060) nutzen, typischerweise in modernen PHP-Anwendungen mit MySQL 8.x, die von der verbesserten Typsicherheit und dem dokumentenorientierten Ansatz profitieren möchten.

  • Fluent Interface: Alle Builder-Methoden geben $this zurück, sodass Methodenaufrufe verkettet werden können.
  • Bindung von Parametern: Über bind() können Platzhalter in der where()-Bedingung sicher ersetzt werden.

Beispiele

Einfaches Update eines Datensatzes in einer Tabelle

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

/** @var mysql_xdevapi\TableUpdate $updateStmt */
$result = $table->update()
    ->set('name', 'Max Mustermann')
    ->set('email', 'max@example.com')
    ->where('id = :id')
    ->bind(['id' => 42])
    ->execute();

echo 'Betroffene Zeilen: ' . $result->getAffectedItemsCount();
Betroffene Zeilen: 1

Update mit Sortierung und Limit

<?php
$nodeSession = mysql_xdevapi\getSession('mysqlx://user:password@localhost:33060');
$schema = $nodeSession->getSchema('shop');
$table = $schema->getTable('produkte');

// Setze die ersten 5 günstigsten Produkte aus der Kategorie 'Elektronik' auf 'ausverkauft'
$result = $table->update()
    ->set('status', 'ausverkauft')
    ->where('kategorie = :kat AND lager = 0')
    ->bind(['kat' => 'Elektronik'])
    ->orderby('preis ASC')
    ->limit(5)
    ->execute();

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

// Wichtig · Fallstricke

Sicherheit: Verwende stets die bind()-Methode, um Benutzereingaben sicher in die where()-Bedingung einzubetten. Das direkte Einfügen von Eingaben in den where()-String kann zu SQL-Injection führen.

Wichtig: Ohne where()-Bedingung aktualisiert die Anweisung alle Zeilen der Tabelle — analog zu einem UPDATE tabelle SET ... ohne WHERE-Klausel. Immer eine sinnvolle Einschränkung setzen oder limit() verwenden.

Die Klasse mysql_xdevapi\TableUpdate erfordert die PECL-Erweiterung mysql_xdevapi sowie einen laufenden MySQL 8.x-Server mit aktiviertem X Plugin (Standard-Port 33060). Sie ist nicht Teil der klassischen mysqli- oder PDO-Erweiterungen.