Выполняет SQL-запрос и возвращает количество затронутых строк

# PDO::exec

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

PDO::exec — Выполняет SQL-запрос и возвращает количество затронутых строк

### Описание

public function PDO::exec(string `$statement`): int|false

Метод PDO::exec() запускает SQL-запрос на выполнение и возвращает количество строк, задействованных в ходе его выполнения.

Метод PDO::exec() не возвращает результат выборки оператором SELECT. Если нужно выбрать данные этим оператором единожды в ходе выполнения программы, используют метод PDO::query(). Если требуется запускать один и тот же запрос на выборку множество раз, лучше создать подготовленный запрос PDOStatement методом PDO::prepare(), а затем запускать его методом PDOStatement::execute() столько раз, сколько потребуется.

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

`statement`

  SQL-выражение, которое необходимо подготовить и запустить.

  Данные внутри запроса должны быть правильно экранированы.

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

Метод PDO::exec() возвращает количество строк, которые были модифицированы или удалены в ходе его выполнения. Если таких строк нет, метод PDO::exec() вернёт значение `0`.

Внимание

Функция возвращает как логическое значение `false`, так и нелогическое значение, которое приводится к `false`. Прочитайте раздел «Логический тип», чтобы получить дополнительную информацию. Используйте оператор === для проверки значения, которое возвращает функция.

В этом примере разработчик допустил ошибку, полагаясь на возвращаемый методом PDO::exec() результат. В результате, если запрос отработал без ошибок, но не модифицировал ни одной строки, работа скрипта будет завершена функцией die():

    <?php
    $db->exec() or die(print_r($db->errorInfo(), true)); // неправильно
    ?>

### Ошибки

Метод выдаёт ошибку уровня `E_WARNING`, если для атрибута `PDO::ATTR_ERRMODE` установили режим `PDO::ERRMODE_WARNING`.

Метод выбрасывает исключение PDOException, если для атрибута `PDO::ATTR_ERRMODE` установили режим `PDO::ERRMODE_EXCEPTION`.

### Примеры

Пример #1 Выполнение запроса DELETE

Получение количества удалённых записей запросом DELETE без условий WHERE.

    <?php
    $dbh = new PDO('odbc:sample', 'db2inst1', 'ibmdb2');

    /* Удаляем все записи из таблицы FRUIT */
    $count = $dbh->exec("DELETE FROM fruit");

    /* Получим количество удалённых записей */
    print "Удалено $count строк.\n";
    ?>

Результат выполнения приведённого примера:

    Удалено 1 строк.

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

- PDO::prepare() - Подготавливает запрос к выполнению и возвращает связанный с этим запросом объект
- PDO::query() - Подготавливает и выполняет выражение SQL без заполнителей
- PDOStatement::execute() - Выполняет подготовленный запрос

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open