PDOStatement::bindParam
(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().
В большинстве случаев в подготавливаемых запросах используются только входные
параметры, то есть при построении запроса доступ к ним осуществляется только в
режиме чтения (возможно приведение
в соответствии с data_type
). Тем не менее, некоторые драйверы позволяют запускать хранимые
процедуры, которые, в свою очередь, могут возвращать данные посредством
выходных параметров. Зачастую, такие параметры используются одновременно
как входные и как выходные.
Список параметров
-
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");
?>
Смотрите также
- PDO::prepare() - Подготавливает запрос к выполнению и возвращает связанный с этим запросом объект
- PDOStatement::execute() - Запускает подготовленный запрос на выполнение
- PDOStatement::bindValue() - Связывает параметр с заданным значением