PDOStatement::rowCount

PHP PDO 参考手册Справочное руководство по 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

PHP PDO 参考手册Справочное руководство по PHP PDO

Другие расширения