(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDOStatement::bindParam — Bindet einen Parameter an den angegebenen Variablennamen
$param
,&$var
,$type
= PDO::PARAM_STR,$maxLength
= 0,$driverOptions
= null
Bindet eine PHP-Variable an den entsprechenden benannten oder durch ein Fragezeichen gekennzeichneten Platzhalter der vorbereiteten SQL-Anweisung. Im Gegensatz zu PDOStatement::bindValue() wird die Variable als Referenz gebunden und wird erst ausgewertet, wenn PDOStatement::execute() aufgerufen wird.
Meistens handelt es sich bei den Parametern um Eingabeparameter, d. h. um Parameter, die nur lesend verwendet werden, um die Abfrage zu erstellen (sie können aber dennoch nach type
umgewandelt werden). Einige Treiber ermöglichen jedoch die Ausführung gespeicherter Prozeduren, die Daten über Ausgabeparameter zurückgeben können. Solche Parameter werden häufig gleichzeitig als Ein- und Ausgabeparameter verwendet, die sowohl Daten senden als auch aktualisiert werden, um sie zu empfangen.
param
Der Bezeichner des Parameters. Bei einer vorbereiteten Anweisung, die benannte Platzhalter verwendet, ist dies ein Parametername der Form :name. Bei einer vorbereiteten Anweisung mit Fragezeichen-Platzhaltern ist dies die Position des Parameters, beginnend mit 1 (1-indiziert).
var
Der Name der PHP-Variable, die an den Parameter der SQL-Anweisung gebunden werden soll.
type
Ein expliziter Datentyp für den Parameter, der durch eine der PDO::PARAM_*
-Konstanten angegeben wird. Soll ein INOUT-Parameter von einer gespeicherten Prozedur zurückgegeben werden, muss der bitweise OR-Operator verwendet werden, um die PDO::PARAM_INPUT_OUTPUT
-Bits für den Parameter type
zu setzen.
maxLength
Die Länge des Datentyps. Um anzuzeigen, dass ein Parameter ein OUT-Parameter einer gespeicherten Prozedur ist, muss die Länge explizit angegeben werden; nur sinnvoll, wenn der Parameter type
PDO::PARAM_INPUT_OUTPUT
ist.
driverOptions
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.
Beispiel #1 Ausführen einer vorbereiteten Anweisung mit benannten Platzhaltern
<?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);
$sth->execute();
?>
Beispiel #2 Ausführen einer vorbereiteten Anweisung mit Fragezeichen-Platzhaltern
<?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);
$sth->execute();
?>
Beispiel #3 Aufrufen einer gespeicherten Prozedur mit einem INOUT-Parameter
<?php
$colour = 'rot';
$sth = $dbh->prepare('CALL puree_fruit(?)');
$sth->bindParam(1, $colour, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->execute();
print "Nach dem Pürieren der Früchte, ist die Farbe: $colour";
?>