PDOStatement::rowCount
Справочное руководство по PHP PDO
PDOStatement::rowCount — возвращает количество строк, затронутых последним SQL-запросом (PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
Описание
Синтаксис
int PDOStatement::rowCount ( void )
PDOStatement::rowCount() возвращает количество строк, затронутых последним запросом DELETE, INSERT или UPDATE, выполненным соответствующим объектом PDOStatement.
Если последним SQL-запросом, выполненным связанным объектом PDOStatement, был запрос SELECT, некоторые базы данных могут вернуть количество строк, возвращённых этим запросом. Однако такое поведение не гарантируется для всех баз данных, и на него не следует полагаться в переносимых приложениях.
Возвращаемые значения
Возвращает количество строк.
Примеры
Возвращает количество удалённых строк
PDOStatement::rowCount() возвращает количество строк, затронутых запросом DELETE, INSERT или UPDATE.
<?php
/* 从 FRUIT 数据表中删除所有行 */
$del = $dbh->prepare('DELETE FROM fruit');
$del->execute();
/* 返回被删除的行数 */
print("Return number of rows that were deleted:\n");
$count = $del->rowCount();
print("Deleted $count rows.\n");
?>
Приведённый выше пример выводит:
Return number of rows that were deleted: Deleted 9 rows.
Вычислить количество строк, возвращаемых оператором SELECT
Для большинства баз данных PDOStatement::rowCount() не возвращает количество строк, затронутых оператором SELECT. Вместо этого используйте PDO::query(), чтобы выполнить оператор SELECT COUNT(*) с теми же условиями, что и предполагаемый оператор SELECT, затем используйте 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 "No rows matched the query.";
}
}
$res = null;
$conn = null;
?>
Приведённый выше пример выводит:
apple banana orange pear
Другие расширения