PDOStatement::rowCount

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

PDOStatement::rowCount Возвращает количество строк, которое затронул последний SQL-запрос

Описание

public PDOStatement::rowCount(): int

Метод 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

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

  • PDOStatement::columnCount() - Возвращает количество столбцов в результирующем наборе
  • PDOStatement::fetchColumn() - Возвращает данные одного столбца следующей строки результирующего набора
  • PDO::query() - Подготавливает и выполняет выражение SQL без заполнителей