Запускает подготовленный запрос на выполнение


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

PDOStatement::execute Запускает подготовленный запрос на выполнение

Описание

public bool PDOStatement::execute ([ array $input_parameters ] )

Запускает подготовленный запрос. Если запрос содержит метки параметров (псевдопеременные), вы должны либо:

  • вызвать PDOStatement::bindParam(), чтобы привязать PHP переменные к параметрам запроса: связанные переменные передадут свои значения в запрос и получат выходные значения (если есть)

  • либо передать массив значений входных (только входных) параметров

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

input_parameters

Массив значений, содержащий столько элементов, сколько параметров заявлено в SQL запросе. Все значения будут приняты, как имеющие тип PDO::PARAM_STR.

Нельзя привязать несколько значений к одному параметру; например, нельзя привязать два значения к именованному параметру в выражении IN().

Нельзя привязать больше значений, чем заявлено в запросе; если в массиве input_parameters больше элементов, чем заявлено в SQL запросе методом PDO::prepare(), выполнение запроса завершится неудачей, и будет вызвана ошибка.

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

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Список изменений

Версия Описание
5.2.0 Ключи массива input_parameters должны совпадать с именами параметров, заявленными в SQL запросе. До PHP 5.2.0 на это не обращалось внимания.

Примеры

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

<?php
/* Выполнение подготовленного запроса с привязкой переменных */
$calories 150;
$colour 'red';
$sth $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour'
);
$sth->bindParam(':calories'$caloriesPDO::PARAM_INT);
$sth->bindParam(':colour'$colourPDO::PARAM_STR12);
$sth->execute();
?>

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

<?php
/* Выполнение подготовленного запроса с передачей массива входных значений */
$calories 150;
$colour 'red';
$sth $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour'
);
$sth->execute(array(':calories' => $calories':colour' => $colour));
?>

Пример #3 Выполнение подготовленного запроса с передачей массива входных значений (неименованные псевдопеременные - знаки вопроса (?))

<?php
/* Выполнение подготовленного запроса с передачей массива входных значений */
$calories 150;
$colour 'red';
$sth $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < ? AND colour = ?'
);
$sth->execute(array($calories$colour));
?>

Пример #4 Выполнение подготовленного запроса с привязкой значений к неименованным псевдопеременным (знакам вопроса)

<?php
/* Выполнение подготовленного запроса с привязкой PHP переменных */
$calories 150;
$colour 'red';
$sth $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < ? AND colour = ?'
);
$sth->bindParam(1$caloriesPDO::PARAM_INT);
$sth->bindParam(2$colourPDO::PARAM_STR12);
$sth->execute();
?>

Пример #5 Выполнение подготовленного запроса с использованием массива для IN выражения

<?php
/* Выполнение подготовленного запроса с использованием массива для IN выражения */
$params = array(12163171);
/* Создаем строку из знаков вопроса (?) в количестве равном количеству параметров */
$place_holders implode(','array_fill(0count($params), '?'));

/*
    В этом примере подготавливается запрос с достаточным количеством неименованных
    псевдопеременных (?) для каждого значения из массива $params. Когда запрос будет
    выполняться, эти знаки вопроса будут заменены на элементы массива. Это не то же
    самое, что использовать PDOStatement::bindParam(), где привязка осуществлялась по
    ссылке на переменную. PDOStatement::execute() связывает параметры по значению.
*/
$sth $dbh->prepare("SELECT id, name FROM contacts WHERE id IN ($place_holders)");
$sth->execute($params);
?>

Примечания

Замечание:

Для некоторых драйверов необходимо закрывать курсор, прежде чем выполнять следующий запрос.

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

  • PDO::prepare() - Подготавливает запрос к выполнению и возвращает ассоциированный с этим запросом объект
  • PDOStatement::bindParam() - Привязывает параметр запроса к переменной
  • PDOStatement::fetch() - Извлечение следующей строки из результирующего набора
  • PDOStatement::fetchAll() - Возвращает массив, содержащий все строки результирующего набора
  • PDOStatement::fetchColumn() - Возвращает данные одного столбца следующей строки результирующего набора