Signatur
Beschreibung
mysql_xdevapi\TableInsert ist Teil der MySQL X DevAPI-Erweiterung und repräsentiert eine vorbereitete INSERT-Anweisung für relationale MySQL-Tabellen. Objekte dieser Klasse werden nicht direkt instanziiert, sondern über die Methode Table::insert() erzeugt.
Der typische Arbeitsablauf besteht darin, zunächst die Zielspalten über insert() festzulegen und anschließend mit values() die einzufügenden Zeilendaten zu übergeben. Mehrere values()-Aufrufe fügen dabei mehrere Zeilen in einem Batch ein. Die Ausführung erfolgt erst durch den Aufruf von execute().
Diese Klasse eignet sich besonders für Szenarien, in denen strukturierte Tabellendaten über die moderne, auf Dokumenten- und Tabellenoperationen ausgerichtete X DevAPI eingefügt werden sollen, ohne direkte SQL-Strings formulieren zu müssen. Sie bietet eine objektorientierte, verkettbare Schnittstelle (Fluent Interface).
- insert() – Legt die Zielspalten fest.
- values() – Fügt eine oder mehrere Zeilen mit Werten hinzu.
- execute() – Führt die Anweisung aus und gibt ein
Result-Objekt zurück.
Beispiele
Einzelne Zeile in eine Tabelle einfügen
<?php
$session = mysql_xdevapi\getSession('mysqlx://user:password@localhost');
$schema = $session->getSchema('meine_datenbank');
$table = $schema->getTable('benutzer');
// Einzelne Zeile einfügen
$result = $table
->insert(['vorname', 'nachname', 'email'])
->values(['Max', 'Mustermann', 'max@example.com'])
->execute();
echo 'Eingefügte Zeilen: ' . $result->getAffectedItemsCount();
Mehrere Zeilen in einem Batch einfügen
<?php
$session = mysql_xdevapi\getSession('mysqlx://user:password@localhost');
$schema = $session->getSchema('meine_datenbank');
$table = $schema->getTable('produkte');
// Mehrere Zeilen auf einmal einfügen (Batch-Insert)
$result = $table
->insert(['name', 'preis', 'lagerbestand'])
->values(['Apfel', 0.49, 200])
->values(['Banane', 0.29, 350])
->values(['Kirsche', 1.99, 80])
->execute();
echo 'Eingefügte Zeilen: ' . $result->getAffectedItemsCount();
echo PHP_EOL;
echo 'Letzte eingefügte ID: ' . $result->getLastInsertId();
// Wichtig · Fallstricke
Sicherheit: Obwohl die X DevAPI parametrisierte Anweisungen intern verwendet und damit SQL-Injection-Risiken gegenüber rohen SQL-Strings reduziert, sollten Eingabewerte vor der Übergabe an values() stets validiert werden, insbesondere bei Daten aus Benutzerformularen.
Voraussetzungen: Die mysql_xdevapi-Erweiterung muss in der PHP-Installation aktiviert sein (extension=mysql_xdevapi in der php.ini). Der MySQL-Server muss das X-Protokoll unterstützen (standardmäßig Port 33060).
Hinweis: Im Gegensatz zum klassischen mysqli oder PDO wird hier kein SQL-String formuliert. Für sehr komplexe INSERT-Anweisungen mit Sub-Selects oder speziellen Klauseln ist direktes SQL über Session::sql() gegebenenfalls besser geeignet.