(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)
PDOStatement::bindParam — Привязывает параметр запроса к переменной
$parameter
   , mixed &$variable
   [, int $data_type = PDO::PARAM_STR
   [, int $length
   [, mixed $driver_options
  ]]] )Связывает PHP переменную с именованным или неименованным параметром подготавливаемого SQL запроса. В отличие от PDOStatement::bindValue(), переменная привязывается по ссылке, и ее значение будет вычисляться во время вызова PDOStatement::execute().
В большинстве случаев в подготавливаемых запросах используются только входные параметры, то есть при построении запроса доступ к ним осуществляется только в режиме чтения. Тем не менее, некоторые драйверы позволяют запускать хранимые процедуры, которые, в свою очередь, могут возвращать данные посредством выходных параметров. Зачастую, такие параметры используются одновременно как входные и как выходные.
parameterИдентификатор параметра. Для подготавливаемых запросов с именованными параметрами это будет имя в виде :name. Если используются неименованные параметры (знаки вопроса ?) это будет позиция псевдопеременной в запросе (начиная с 1).
variableИмя PHP переменной, которую требуется привязать к параметру SQL запроса.
data_type
        Явно заданный тип данных параметра. Тип задается одной из констант 
        PDO::PARAM_*. Если параметр используется в том числе для вывода информации
        из хранимой процедуры, к значению аргумента
        data_type необходимо добавить
        PDO::PARAM_INPUT_OUTPUT, используя оператор побитовое ИЛИ.
       
lengthРазмер типа данных. Чтобы указать, что параметр используется для вывода данных из хранимой процедуры, необходимо явно задать его размер.
driver_options
   Возвращает TRUE в случае успешного завершения  или FALSE в случае возникновения ошибки.
  
Пример #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, 12);
$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, 12);
$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("After pureeing fruit, the colour is: $colour");
?>