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 →