(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)
PDO::exec — Выполняет SQL-запрос и возвращает количество затронутых строк
$statement
) : intPDO::exec() запускает SQL-запрос на выполнение и возвращает количество строк, задействованых в ходе его выполнения.
PDO::exec() не возвращает результат выборки оператором SELECT. Если вам нужно выбрать данные этим оператором единожды в ходе выполнения программы, воспользуйтесь методом PDO::query(). Если требуется запускать один и тот же запрос на выборку множество раз, лучше создать подготовленный запрос PDOStatement методом PDO::prepare(), а затем запускать его методом PDOStatement::execute() столько раз, сколько потребуется.
statement
SQL-выражение, которое необходимо подготовить и запустить.
Данные внутри запроса должны быть правильно экранированы.
PDO::exec() возвращает количество строк, которые были модифицированы или удалены в ходе его выполнения. Если таких строк нет, PDO::exec() вернет 0.
Эта функция может возвращать как логическое значение FALSE
, так и значение не типа boolean, которое приводится к FALSE
. За более подробной информацией обратитесь к разделу Булев тип. Используйте оператор === для проверки значения, возвращаемого этой функцией.
В этом примере разработчик допустил ошибку, полагаясь на возвращаемый результат PDO::exec(). В результате, если запрос отработал без ошибок, но не модифицировал ни одной строки, работа скрипта будет завершена функцией die():
<?php
$db->exec() or die(print_r($db->errorInfo(), true)); // неправильно
?>
Пример #1 Выполнение запроса DELETE
Получение количества удаленных записей запросом DELETE без условий WHERE.
<?php
$dbh = new PDO('odbc:sample', 'db2inst1', 'ibmdb2');
/* Удаляем все записи из таблицы FRUIT */
$count = $dbh->exec("DELETE FROM fruit");
/* Получим количество удаленных записей */
print("Удалено $count строк.\n");
?>
Результат выполнения данного примера:
Удалено 1 строк.