Start · Sprachen · PHP · Referenz · mysql_xdevapi\TableInsert

mysql_xdevapi\TableInsert

Klasse

Repräsentiert eine INSERT-Anweisung für relationale Tabellen im MySQL X DevAPI und ermöglicht das Einfügen von Zeilen in eine Tabelle.

seit PHP 8.0.11 Kategorie: db

Signatur

class mysql_xdevapi\TableInsert

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();
Eingefügte Zeilen: 1

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();
Eingefügte Zeilen: 3 Letzte eingefügte ID: 1

// 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.