PDOStatement::bindParam

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

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

Описание

publicPDOStatement::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

$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

$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

$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() - Связывает параметр с заданным значением
To Top