(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDOStatement::rowCount — Возвращает количество строк, которое затронул последний SQL-запрос
Метод PDOStatement::rowCount() возвращает количество строк,
которое затронул последний запрос DELETE, INSERT или UPDATE
объекта PDOStatement.
Для запросов наподобие SELECT, которые создают наборы результатов,
поведение не определено и индивидуально для каждого драйвера.
Отдельные базы данных, например MySQL в режиме буферизации результатов, иногда возвращают количество строк,
которое вернул этот запрос, но такое поведение не гарантируется для каждой базы данных
и на него лучше не полагаться в переносимых приложениях.
Замечание:
При взаимодействии с БД через драйвер PostgreSQL метод возвращает числовую строку "0", если в запросе для атрибута
PDO::ATTR_CURSORустановили значениеPDO::CURSOR_SCROLL.
Сигнатура функции не содержит параметров.
Метод возвращает количество строк.
Метод выдаёт ошибку уровня E_WARNING, если для атрибута PDO::ATTR_ERRMODE
установили режим PDO::ERRMODE_WARNING.
Метод выбрасывает исключение PDOException, если для атрибута PDO::ATTR_ERRMODE
установили режим PDO::ERRMODE_EXCEPTION.
Пример #1 Пример получения количества удалённых строк
Метод PDOStatement::rowCount() возвращает количество строк, изменённых выражениями DELETE, INSERT или UPDATE.
<?php
/* Удалим все строки из таблицы FRUIT */
$del = $dbh->prepare('DELETE FROM fruit');
$del->execute();
/* Выведем число удалённых строк */
print "Количество удалённых строк:\n";
$count = $del->rowCount();
print "Удалено $count строк.\n";
?>Вывод приведённого примера будет похож на:
Количество удалённых строк: Удалено 9 строк.
Пример #2 Пример подсчёта строк в результатах запроса SELECT
Для большей части СУБД метод PDOStatement::rowCount() не возвращает количество строк в результатах SELECT-запроса. Вместо этого метода вызывают метод PDO::query() со строкой запроса SELECT COUNT(*) и теми же предикатами, которые планировали указать в главном SELECT-запросе, а затем вызывают метод PDOStatement::fetchColumn(), чтобы получить количество строк, которое соответствует запросу.
<?php
$sql = "SELECT COUNT(*) FROM fruit WHERE calories > 100";
$res = $conn->query($sql);
$count = $res->fetchColumn();
print "Количество записей, которые соответствуют запросу: " . $count;
?>Вывод приведённого примера будет похож на:
Количество записей, которые соответствуют запросу: 2