(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
/* Ausführen einer vorbereiteten Anweisung durch Binden von PHP-Variablen */
$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);
/* Den Namen kann auch ein Doppelpunkt ":" vorangestellt werden (optional) */
$sth->bindParam(':colour', $colour, PDO::PARAM_STR);
$sth->execute();
?>
Beispiel #2 Ausführen einer vorbereiteten Anweisung mit Fragezeichen-Platzhaltern
<?php
/* Ausführen einer vorbereiteten Anweisung durch Binden von PHP-Variablen */
$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
/* Aufrufen einer gespeicherten Prozedur mit einem INOUT-Parameter */
$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";
?>