# PDOStatement::bindParam

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

PDOStatement::bindParam — Bindet einen Parameter an den angegebenen Variablennamen

### Beschreibung

public PDOStatement::bindParam(
string|int `$param`,
mixed `&$var`,
int `$type` = `PDO::PARAM_STR`,
int `$maxLength` = 0,
mixed `$driverOptions` = `null`
): bool

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.

### Parameter-Liste

`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`

### 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 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";
?>`

### Siehe auch

- PDO::prepare() - Bereitet eine Anweisung zur Ausführung vor und liefert ein Anweisungsobjekt
- PDOStatement::execute() - Führt ein Prepared Statement aus
- PDOStatement::bindValue() - Bindet einen Wert an einen Parameter

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