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

# PDOStatement::rowCount

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

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

### Описание

public function 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 без заполнителей

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