PHP
数据库 | Database

PDOStatement::rowCount

PDOStatement::rowCount

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

PDOStatement :: rowCount - 返回最后一条SQL语句影响的行数

描述

public int PDOStatement::rowCount ( void )

PDOStatement :: rowCount()返回受相应PDOStatement对象执行的最后一个DELETE,INSERT或UPDATE语句影响的行数。

如果由关联的PDOStatement 执行的最后一条SQL语句是SELECT语句,则某些数据库可能会返回该语句返回的行数。但是,不能保证所有数据库的这种行为,并且不应该依赖便携式应用程序。

返回值

返回行数。

示例

示例#1 返回删除的行数

PDOStatement :: rowCount()返回受DELETE,INSERT或UPDATE语句影响的行数。

<?php /* Delete all rows from the FRUIT table */ $del = $dbh->prepare('DELETE FROM fruit' $del->execute( /* Return number of rows that were deleted */ 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.

示例#2 计算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)) {     /* Check the number of rows that match the SELECT statement */   if ($res->fetchColumn() > 0) {         /* Issue the real SELECT statement and work with the results */          $sql = "SELECT name FROM fruit WHERE calories > 100";        foreach ($conn->query($sql) as $row) {            print "Name: " .  $row['NAME'] . "\n";          }     }     /* No rows matched -- do something else */   else {       print "No rows matched the query.";     } } $res = null; $conn = null; ?>

上面的例子将输出:

apple banana orange pear

扩展内容

  • PDOStatement :: columnCount() - 返回结果集中的列数

  • PDOStatement :: fetchColumn() - 返回结果集的下一行中的单个列

  • PDO :: query() - 执行一条SQL语句,返回一个结果集作为PDOStatement对象

← PDOStatement::nextRowset

PDOStatement::setAttribute →