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 →
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com