Führt ein Prepared Statement aus

# PDOStatement::execute

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDOStatement::execute — Führt ein Prepared Statement aus

### Beschreibung

public function PDOStatement::execute(?array `$params` = `null`): bool

Führt das Prepared Statement aus. Falls das Prepared Statement Parameter-Marker enthält, muss entweder:

- PDOStatement::bindParam() und/oder PDOStatement::bindValue() müssen aufgerufen werden, um Variablen bzw. Werte an die Parameter-Marker zu binden. Gebundene Variablen übergeben ihren Wert als Eingabe und erhalten, falls vorhanden, den Ausgabewert ihrer zugehörigen Parameter-Marker.

- oder ein Array mit Nur-Eingabe-Parameterwerten übergeben werden.

### Parameter-Liste

`params`

  Ein Array von Werten mit so vielen Elementen, wie es gebundene Parameter in der auszuführenden SQL-Anweisung gibt. Alle Werte werden als `PDO::PARAM_STR` behandelt.

  An einen einzelnen Paramter können nicht mehrere Werte gebunden werden; es ist z. B. nicht gestattet, zwei Werte an einen einzelnen benannten Parameter in einer IN()-Klausel zu binden.

  Mehr Werte zu binden als festgelegt ist nicht möglich; wenn `params` mehr Parameter enthält als in PDO::prepare() definiert wurden, wird die Anweisung fehlschlagen und ein Fehler wird ausgegeben.

### Rückgabewerte

Gibt bei Erfolg `true` zurück. Bei einem Fehler wird `false` zurückgegeben.

### Fehler/Exceptions

Gibt einen Fehler der Stufe `E_WARNING` aus, wenn das Attribut `PDO::ATTR_ERRMODE` auf `PDO::ERRMODE_WARNING` gesetzt ist.

Löst eine PDOException aus, wenn das Attribut `PDO::ATTR_ERRMODE` auf `PDO::ERRMODE_EXCEPTION` gesetzt ist.

### Beispiele

Beispiel #1 Ein Prepared Statement mit Variablen- und Wertebindung ausführen

    <?php
    /* Ein Prepared Statement ausführen, in dem Variable und Wert zugewiesen werden */
    $calories = 150;
    $colour = 'gre';
    $sth = $dbh->prepare('SELECT name, colour, calories
        FROM fruit
        WHERE calories < :calories AND colour LIKE :colour');
    $sth->bindParam('calories', $calories, PDO::PARAM_INT);
    /* Den Namen können auch Doppelpunkte ":" vorangestellt werden (optional) */
    $sth->bindValue(':colour', "%$colour%");
    $sth->execute();
    ?>

Beispiel #2 Ein Prepared Statement mit einem Array von benannten Eingabewerten ausführen

    <?php
    /* Ein Prepared Statement ausführen, indem ein Array von Eingabewerten übergeben wird */
    $calories = 150;
    $colour = 'red';
    $sth = $dbh->prepare('SELECT name, colour, calories
        FROM fruit
        WHERE calories < :calories AND colour = :colour');
    $sth->execute(array('calories' => $calories, 'colour' => $colour));
    /* Den Array-Schlüsseln können auch Doppelpunkte ":" vorangestellt werden (optional) */
    $sth->execute(array(':calories' => $calories, ':colour' => $colour));
    ?>

Beispiel #3 Ein Prepared Statement mit einem Array von Positionswerten ausführen

    <?php
    /* Ein Prepared Statement ausführen, indem ein Array von Eingabewerten übergeben wird */
    $calories = 150;
    $colour = 'red';
    $sth = $dbh->prepare('SELECT name, colour, calories
        FROM fruit
        WHERE calories < ? AND colour = ?');
    $sth->execute(array($calories, $colour));
    ?>

Beispiel #4 Ein Prepared Statement mit Variablen ausführen, die an positionale Platzhalter gebunden sind

    <?php
    /* Ein Prepared Statement durch das binden von PHP-Variablen ausführen*/
    $calories = 150;
    $colour = 'red';
    $sth = $dbh->prepare('SELECT name, colour, calories
        FROM fruit
        WHERE calories < ? AND colour = ?');
    $sth->bindParam(1, $calories, PDO::PARAM_INT);
    $sth->bindParam(2, $colour, PDO::PARAM_STR, 12);
    $sth->execute();
    ?>

Beispiel #5 Ein Prepared Statement mit einem Array für eine IN-Klausel ausführen

    <?php
    /* Führt ein Prepared Statement mit einem Array für eine IN-Klausel aus */
    $params = array(1, 21, 63, 171);
    /* Erstelle einen String für die Parameter-Platzhalter, gefüllt bis zur Anzahl Parameter */
    $place_holders = '?' . str_repeat(', ?', count($params) - 1);

    /*
        Das bereitet das Statement mit genügend unbenannten Platzhaltern
        für jeden Wert in unserem $params-Array vor. Die Werte aus dem
        $params-Array werden dann an die Platzhalter im Prepared Statement
        gebunden, wenn das Statement ausgeführt wird. Das ist nicht das
        gleiche wie PDOStatement::bindParam() zu verwenden, weil dies eine
        Referenz zur Variable benötigt. PDOStatement::execute() ordnet
        hingegen nur die Werte zu.
    */
    $sth = $dbh->prepare("SELECT id, name FROM contacts WHERE id IN ($place_holders)");
    $sth->execute($params);
    ?>

### Anmerkungen

> Hinweis:

> Manche Treiber verlangen die Ausführung von close cursor, bevor das nächste Statement ausgeführt wird.

### Siehe auch

- PDO::prepare() - Bereitet eine Anweisung zur Ausführung vor und liefert ein Anweisungsobjekt
- PDOStatement::bindParam() - Bindet einen Parameter an den angegebenen Variablennamen
- PDOStatement::fetch() - Ruft die nächste Zeile aus einer Ergebnismenge ab
- PDOStatement::fetchAll() - Ruft die verbleibenden Zeilen aus einer Ergebnismenge ab
- PDOStatement::fetchColumn() - Liefert eine einzelne Spalte aus der nächsten Zeile einer Ergebnismenge

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open