PDOStatement::execute - Запускает подготовленный запрос на выполнение
Вернуться к: PDOStatement
PDOStatement::execute
(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)
PDOStatement::execute — Запускает подготовленный запрос на выполнение
Описание
$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', $calories, PDO::PARAM_INT);
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
$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, $calories, PDO::PARAM_INT);
$sth->bindParam(2, $colour, PDO::PARAM_STR, 12);
$sth->execute();
?>
Пример #5 Выполнение подготовленного запроса с использованием массива для IN выражения
<?php
/* Выполнение подготовленного запроса с использованием массива для IN выражения */
$params = array(1, 21, 63, 171);
/* Создаем строку из знаков вопроса (?) в количестве равном количеству параметров */
$place_holders = implode(',', array_fill(0, count($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() - Возвращает данные одного столбца следующей строки результирующего набора
Вернуться к: PDOStatement