(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
PDOStatement::rowCount — Возвращает количество строк, модифицированных последним SQL запросом
PDOStatement::rowCount() возвращает количество строк, которые были затронуты в ходе выполнения последнего запроса DELETE, INSERT или UPDATE, запущенного соответствующим объектом PDOStatement.
Если последним запросом, запущенным соответствующим объектом PDOStatement, было SQL выражение SELECT, некоторые СУБД могут вернуть количество строк в результирующем наборе. Однако, такое поведение метода не гарантируется для всех баз данных, и это нужно учитывать при проектировании приложений.
Возвращает количество строк.
Пример #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