PDOStatement::rowCount

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

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

Описание

public PDOStatement::rowCount ( void ) : int

PDOStatement::rowCount() возвращает количество строк, которые были затронуты в ходе выполнения последнего запроса DELETE, INSERT или UPDATE, запущенного соответствующим объектом PDOStatement.

Если последним запросом, запущенным соответствующим объектом PDOStatement, было SQL-выражение SELECT, некоторые СУБД могут вернуть количество строк в результирующем наборе. Однако, такое поведение метода не гарантируется для всех баз данных, и это нужно учитывать при проектировании приложений.

Замечание:

Этот метод всегда возвращает "0" (ноль) с драйвером SQLite, а с драйвером PostgreSQL только при установке атрибута оператора PDO::ATTR_CURSOR равным PDO::CURSOR_SCROLL.

Возвращаемые значения

Возвращает количество строк.

Примеры

Пример #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(*) с тем же текстом запроса. Затем методом PDOStatement::fetchColumn() вы получите число строк в результирующем наборе. Эта методика будет работать со всеми СУБД.

<?php
$sql 
"SELECT COUNT(*) FROM fruit WHERE calories > 100";
if (
$res $conn->query($sql)) {

    
/* Определим количество строк, подходящих под условия выражения SELECT */
    
if ($res->fetchColumn() > 0) {

        
/* Выполняем реальный SELECT и работаем с его результатами */
        
$sql "SELECT name FROM fruit WHERE calories > 100";

        foreach (
$conn->query($sql) as $row) {
            print 
"Name: " .  $row['NAME'] . "\n";
        }
    }
    
/* Результатов нет -- делаем что-то другое */
    
else {
        print 
"Нет строк соответствующих запросу.";
    }
}

$res null;
$conn null;
?>

Результат выполнения данного примера:

apple
banana
orange
pear

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

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