Привязывает параметр запроса к переменной

# PDOStatement::bindParam

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

PDOStatement::bindParam — Привязывает параметр запроса к переменной

### Описание

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

Связывает переменную PHP с именованным или неименованным параметром подготавливаемого SQL-запроса. В отличие от PDOStatement::bindValue(), переменная привязывается по ссылке и её значение будет вычисляться во время вызова PDOStatement::execute().

В большинстве случаев в подготавливаемых запросах используются только входные параметры, то есть при построении запроса доступ к ним осуществляется только в режиме чтения (возможно приведение в соответствии с `type`). Тем не менее, некоторые драйверы позволяют запускать хранимые процедуры, которые, в свою очередь, могут возвращать данные посредством выходных параметров. Зачастую, такие параметры используются одновременно как входные и как выходные.

### Список параметров

`param`

  Идентификатор параметра. Для подготавливаемых запросов с именованными параметрами это будет имя в виде :name. Если используются неименованные параметры (знаки вопроса ?) это будет позиция псевдопеременной в запросе (начиная с 1).

`var`

  Имя переменной PHP, которую требуется привязать к параметру SQL-запроса.

`type`

  Явно заданный тип данных параметра. Тип задаётся одной из констант `PDO::PARAM_*`. Если параметр используется, в том числе для вывода информации из хранимой процедуры, к значению аргумента `type` необходимо добавить `PDO::PARAM_INPUT_OUTPUT`, используя оператор побитовое ИЛИ.

`maxLength`

  Размер типа данных. Чтобы указать, что параметр используется для вывода данных из хранимой процедуры, необходимо явно задать его размер. Имеет значение, только если у параметра `type` установлено значение `PDO::PARAM_INPUT_OUTPUT`.

`driverOptions`

### Возвращаемые значения

Функция возвращает `true`, если выполнилась успешно, или `false`, если возникла ошибка.

### Ошибки

Метод выдаёт ошибку уровня `E_WARNING`, если для атрибута `PDO::ATTR_ERRMODE` установили режим `PDO::ERRMODE_WARNING`.

Метод выбрасывает исключение PDOException, если для атрибута `PDO::ATTR_ERRMODE` установили режим `PDO::ERRMODE_EXCEPTION`.

### Примеры

Пример #1 Выполнение подготовленного запроса с именованными псевдопеременными

    <?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);
    $sth->execute();
    ?>

Пример #2 Выполнение подготовленного запроса с неименованными псевдопеременными (?)

    <?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);
    $sth->execute();
    ?>

Пример #3 Вызов хранимой процедуры с INOUT-параметром

    <?php
    /* Вызов хранимой процедуры с INOUT-параметром */
    $colour = 'red';
    $sth = $dbh->prepare('CALL puree_fruit(?)');
    $sth->bindParam(1, $colour, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
    $sth->execute();
    print "После приготовления фруктового пюра, цвет - $colour";
    ?>

### Смотрите также

- PDO::prepare() - Подготавливает запрос к выполнению и возвращает связанный с этим запросом объект
- PDOStatement::execute() - Выполняет подготовленный запрос
- PDOStatement::bindValue() - Связывает параметр с заданным значением

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