PDOStatement::execute

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

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

Описание

publicPDOStatement::execute(?array$params = null): bool

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

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

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

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

params

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

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

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

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

Возвращает true в случае успешного выполнения или false, если возникла ошибка.

Ошибки

Выдаёт ошибку уровня E_WARNING, если атрибуту PDO::ATTR_ERRMODE установлено значение PDO::ERRMODE_WARNING.

Выбрасывает исключение PDOException, если атрибуту PDO::ATTR_ERRMODE установлено значение PDO::ERRMODE_EXCEPTION.

Примеры

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

<?php

$calories = 150;
$colour = 'gre';
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < :calories AND colour LIKE :colour'
);
$sth->bindParam('calories', $calories, PDO::PARAM_INT);

$sth->bindValue(':colour', "%$colour%");
$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));

$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

$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

$params = array(1, 21, 63, 171);

$place_holders = implode(',', array_fill(0, count($params), '?'));


$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() - Возвращает данные одного столбца следующей строки результирующего набора
To Top