(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDO::exec — Выполняет SQL-запрос и возвращает количество затронутых строк
Метод 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 строк.