(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
]]] ) : boolСвязывает переменную 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("После приготовления фруктового пюра, цвет - $colour");
?>