首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PDOStatement::rowCount

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

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

描述

代码语言:javascript
复制
public int PDOStatement::rowCount ( void )

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

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

返回值

返回行数。

示例

示例#1 返回删除的行数

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

代码语言:javascript
复制
<?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");
?>

上面的例子将输出:

代码语言:javascript
复制
Return number of rows that were deleted:
Deleted 9 rows.

示例#2 计算SELECT语句返回的行

对于大多数数据库来说,PDOStatement :: rowCount()不会返回受SELECT语句影响的行数。相反,使用PDO :: query()来发出一个SELECT COUNT(*)语句,其谓词与您想要的SELECT语句相同,然后使用PDOStatement :: fetchColumn()来检索将返回的行数。然后您的应用程序可以执行正确的操作。

代码语言:javascript
复制
<?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;
?>

上面的例子将输出:

代码语言:javascript
复制
apple
banana
orange
pear

扩展内容

  • PDOStatement :: columnCount() - 返回结果集中的列数
  • PDOStatement :: fetchColumn() - 返回结果集的下一行中的单个列
  • PDO :: query() - 执行一条SQL语句,返回一个结果集作为PDOStatement对象

← PDOStatement::nextRowset

PDOStatement::setAttribute →

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com