Start · Sprachen · PHP · Referenz · mysql_xdevapi\TableDelete

mysql_xdevapi\TableDelete

Klasse

Repräsentiert eine DELETE-Anweisung für eine MySQL-Tabelle im X DevAPI-Stil und ermöglicht das gezielte Löschen von Datensätzen.

seit PHP 8.0.3 Kategorie: db

Signatur

class mysql_xdevapi\TableDelete

Beschreibung

mysql_xdevapi\TableDelete ist Teil der MySQL X DevAPI-Erweiterung für PHP und kapselt eine SQL-DELETE-Anweisung für relationale Tabellen. Das Objekt wird nicht direkt instanziiert, sondern über die Methode Table::delete() erzeugt und bietet eine fluent-interface-basierte API zum schrittweisen Aufbau der Löschanfrage.

Mit dieser Klasse können Bedingungen über where() festgelegt, die Anzahl zu löschender Zeilen über limit() begrenzt und die Sortierreihenfolge über orderby() bestimmt werden, bevor die Anweisung mit execute() ausgeführt wird. Durch die Methoden-Verkettung ergibt sich eine übersichtliche, lesbare Syntax.

Die Klasse ist besonders nützlich, wenn man im Rahmen einer X DevAPI-Anwendung strukturierte Tabellendaten löschen möchte, ohne reine SQL-Strings schreiben zu müssen. Dies fördert saubereren, sichereren Code, da Parameter gebunden werden können und keine manuelle Zeichenkettenkonstruktion nötig ist.

Hinweis: Dieses Feature setzt die MySQL X DevAPI-Erweiterung (mysql_xdevapi) sowie einen MySQL-Server mit aktiviertem X Protocol (Standard-Port 33060) voraus.

Beispiele

Datensätze nach Bedingung löschen

<?php
// Verbindung via X DevAPI herstellen
$session = mysql_xdevapi\getSession('mysqlx://user:password@localhost');
$schema = $session->getSchema('meine_datenbank');
$table  = $schema->getTable('kunden');

// TableDelete-Objekt erzeugen und Bedingung setzen
$deleteStmt = $table->delete()
    ->where('status = :status')
    ->bind(['status' => 'inaktiv'])
    ->limit(10)
    ->orderby('erstellt_am ASC');

// Anweisung ausführen
$result = $deleteStmt->execute();

echo 'Gelöschte Zeilen: ' . $result->getAffectedItemsCount();
Gelöschte Zeilen: 10

Alle Datensätze einer Tabelle löschen (ohne WHERE)

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

// ALLE Zeilen löschen – kein where()-Aufruf
$result = $table->delete()->execute();

echo 'Tabelle geleert. Betroffene Zeilen: ' . $result->getAffectedItemsCount();
Tabelle geleert. Betroffene Zeilen: 42

// Wichtig · Fallstricke

Sicherheit: Verwende niemals unkontrollierte Benutzereingaben direkt in der where()-Bedingung als Zeichenkette. Nutze stets Parameter-Platzhalter (:name) in Kombination mit bind(), um SQL-Injection zu verhindern.

Achtung: Wird execute() ohne vorherigen where()-Aufruf ausgeführt, werden alle Zeilen der Tabelle gelöscht – das Verhalten entspricht einem DELETE FROM tabelle ohne WHERE-Klausel. Verwende in solchen Fällen limit() als Sicherheitsnetz.

Die Klasse steht nur zur Verfügung, wenn die PHP-Erweiterung mysql_xdevapi installiert und ein MySQL-Server mit X Plugin (Port 33060) verfügbar ist. In Produktionsumgebungen sollte sichergestellt sein, dass die Verbindung verschlüsselt (ssl-mode=REQUIRED) erfolgt.