PDOStatement :: Execute
PDOStatement :: ausführen - eine vorbereitete Anweisung (PHP 5> = 5.1.0, PECL gU> = 0.1.0)
Erklärung
Grammatik
bool PDOStatement::execute ([ array $input_parameters ] )
Die Umsetzung der vorbereiteten Anweisungen. Wenn Aussagen enthalten, Parametermarken vorbereitet, müssen Sie eine der folgenden Methoden wählen:
Rufen Sie PDOStatement :: bindParam () PHP - Variablen auf die Parametermarken zu binden: wenn überhaupt, durch die Eingangswerte zu passieren und Variablen für Parametermarken gebunden um einen Ausgangswert zu erhalten
Oder einfach nur als ein vorübergehendes Eingangsparameterwert Array
Parameter
input_parameters
Eine Anzahl von Elementen und die Parameter der SQL-Anweisung so viele Bindungen Array ausgeführt werden. Alle Werte sind als PDO :: PARAM_STR behandelt.
Sie können nicht mehrere Werte zu einem einzigen Argument binden, zum Beispiel, können Sie nicht binden zwei Werte an die IN () Klausel in einem einzigen benannten Parameter.
Bound-Wert kann nicht die angegebene Anzahl nicht überschreiten. Wenn es in den SQL-Vorverarbeitung input_parameters angegeben mehr als PDO :: prepare () und mehr Schlüsselnamen, dann wird diese Aussage mit einem Fehler fehl.
Rückgabewert
Erfolgreiche Rückkehr TRUE, oder bei einem Fehler FALSCH.
Beispiele
Führen Sie eine vorbereitete Anweisung Bind-Variablen
<?php /* 通过绑定 PHP 变量执行一条预处理语句 */ $calories = 150; $colour = 'red'; $sth = $dbh->prepare('SELECT name, colour, calories FROM fruit WHERE calories < :calories AND colour = :colour'); $sth->bindParam(':calories', $calories, PDO::PARAM_INT); $sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12); $sth->execute(); ?>
Verwenden Sie ein Array mit dem Einsatzwert enthält, wird als eine vorbereitete Anweisung (benannte Parameter) ausgeführt
<?php /* 通过传递一个含有插入值的数组执行一条预处理语句 */ $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)); ?>
Verwenden Sie ein Array mit dem Einsatzwert enthält, wird als eine vorbereitete Anweisung (Platzhalter) ausgeführt
<?php /* 通过传递一个插入值的数组执行一条预处理语句 */ $calories = 150; $colour = 'red'; $sth = $dbh->prepare('SELECT name, colour, calories FROM fruit WHERE calories < ? AND colour = ?'); $sth->execute(array($calories, $colour)); ?>
Implementierung eines Fragezeichen-Platzhalter in der vorbereiteten Anweisung
<?php /* 通过绑定 PHP 变量执行一条预处理语句 */ $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(); ?>
Mit Arrays eine vorbereitete Anweisung enthält die IN-Klausel auszuführen
<?php /* 使用一个数组的值执行一条含有 IN 子句的预处理语句 */ $params = array(1, 21, 63, 171); /* 创建一个填充了和params相同数量占位符的字符串 */ $place_holders = implode(',', array_fill(0, count($params), '?')); /* 对于 $params 数组中的每个值,要预处理的语句包含足够的未命名占位符 。 语句被执行时, $params 数组中的值被绑定到预处理语句中的占位符。 这和使用 PDOStatement::bindParam() 不一样,因为它需要一个引用变量。 PDOStatement::execute() 仅作为通过值绑定的替代。 */ $sth = $dbh->prepare("SELECT id, name FROM contacts WHERE id IN ($place_holders)"); $sth->execute($params); ?>