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
$params
= null
): boolFührt das Prepared Statement aus. Falls das Prepared Statement Parameter-Marker enthält, muss entweder:
-
PDOStatement::bindParam() und/oder PDOStatement::bindValue() 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.
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 = implode(',', array_fill(0, count($params), '?'));
/*
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() - Prepares a statement for execution and returns a statement object
- PDOStatement::bindParam() - Binds a parameter to the specified variable name
- PDOStatement::fetch() - Fetches the next row from a result set
- PDOStatement::fetchAll() - Fetches the remaining rows from a result set
- PDOStatement::fetchColumn() - Returns a single column from the next row of a result set