Start · Sprachen · PHP · Referenz · mysqli_execute

mysqli_execute

Funktion

Alias von <code>mysqli_stmt_execute()</code> — führt ein vorbereitetes MySQLi-Statement aus.

seit PHP 5.0.0 Kategorie: db

Signatur

mysqli_execute(mysqli_stmt $statement): bool

Beschreibung

mysqli_execute() ist ein direkter Alias der Funktion mysqli_stmt_execute() und führt ein zuvor mit mysqli_prepare() vorbereitetes SQL-Statement aus. Die Funktion arbeitet im prozeduralen Stil der MySQLi-Erweiterung.

Vor dem Aufruf sollten alle Platzhalter im Statement mit mysqli_stmt_bind_param() an entsprechende PHP-Variablen gebunden worden sein. Das Statement wird dann serverseitig mit den gebundenen Werten ausgeführt, was wiederholte Ausführungen desselben Statements mit unterschiedlichen Parametern effizient ermöglicht.

Da mysqli_execute() nur ein Alias ist, empfiehlt es sich in neuen Projekten, direkt mysqli_stmt_execute() zu verwenden, um die Abhängigkeit von einem Alias zu vermeiden und den Code klarer zu gestalten.

Prepared Statements schützen vor SQL-Injection-Angriffen, da Benutzereingaben niemals direkt in die SQL-Abfrage einfließen, sondern stets als separate Parameter behandelt werden.

Parameter

Name Typ Default Beschreibung
$statement Pflicht mysqli_stmt Ein mit mysqli_prepare() erzeugtes MySQLi-Statement-Objekt, das ausgeführt werden soll.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false im Fehlerfall. Der Fehler kann mit mysqli_stmt_error() oder mysqli_error() abgefragt werden.

Beispiele

Datensatz mit Prepared Statement einfügen

<?php
$link = mysqli_connect('localhost', 'benutzer', 'passwort', 'testdb');

if (!$link) {
    die('Verbindungsfehler: ' . mysqli_connect_error());
}

$stmt = mysqli_prepare($link, 'INSERT INTO benutzer (name, email) VALUES (?, ?)');

mysqli_stmt_bind_param($stmt, 'ss', $name, $email);

$name  = 'Max Mustermann';
$email = 'max@example.com';

if (mysqli_execute($stmt)) {
    echo 'Datensatz erfolgreich eingefügt.';
} else {
    echo 'Fehler: ' . mysqli_stmt_error($stmt);
}

mysqli_stmt_close($stmt);
mysqli_close($link);
Datensatz erfolgreich eingefügt.

Mehrfache Ausführung desselben Statements mit unterschiedlichen Werten

<?php
$link = mysqli_connect('localhost', 'benutzer', 'passwort', 'testdb');

$stmt = mysqli_prepare($link, 'INSERT INTO produkte (bezeichnung, preis) VALUES (?, ?)');
mysqli_stmt_bind_param($stmt, 'sd', $bezeichnung, $preis);

$datensaetze = [
    ['Apfel',  0.49],
    ['Banane', 0.29],
    ['Kirsche', 1.99],
];

foreach ($datensaetze as [$bezeichnung, $preis]) {
    if (!mysqli_execute($stmt)) {
        echo 'Fehler beim Einfügen: ' . mysqli_stmt_error($stmt) . PHP_EOL;
    }
}

echo 'Alle Produkte eingefügt.';

mysqli_stmt_close($stmt);
mysqli_close($link);
Alle Produkte eingefügt.

// Wichtig · Fallstricke

Alias-Hinweis: mysqli_execute() ist lediglich ein Alias von mysqli_stmt_execute(). Für neue Projekte wird die direkte Verwendung von mysqli_stmt_execute() empfohlen, da Aliase in zukünftigen PHP-Versionen potenziell entfernt werden könnten.

Sicherheit: Prepared Statements bieten zuverlässigen Schutz vor SQL-Injection. Es ist dennoch wichtig, Eingaben serverseitig zu validieren, bevor sie als Parameter übergeben werden.

OOP-Alternative: Im objektorientierten Stil steht mysqli_stmt::execute() zur Verfügung, was in modernem PHP-Code bevorzugt werden sollte.