Yii框架:如何获取num_rows?

时间:2012-10-18 17:00:05

标签: yii

由于official documentation没有说明如何使用他们的系统简单地“num_rows”,我需要一些帮助:如何获得结果集中的行数?

3 个答案:

答案 0 :(得分:14)

假设:

$connection=Yii::app()->db;
$command=$connection->createCommand($sql);

这适用于插入,更新和删除:

$rowCount=$command->execute();

execute():执行非查询SQL语句,例如INSERT,UPDATE和DELETE。如果成功,则返回受执行影响的行数。

对于select,您可以执行以下操作:

$dataReader=$command->query();

这将生成CDbDataReader实例,CDbDataReader提供rowCount属性

http://www.yiiframework.com/doc/api/1.1/CDbDataReader#rowCount-detail

$rowCount = $dataReader->rowCount;

关于rowCount =>返回结果集中的行数。请注意,大多数DBMS可能无法提供有意义的计数。在这种情况下,使用“SELECT COUNT(*)FROM tableName”来获取行数。

答案 1 :(得分:5)

ActiveRecord有count方法可供使用。

$cntCriteria = new CDbCriteria();
$cntCriteria->condition = "categoryId = :categoryId";
$cntCriteria->params[':categoryId'] = $categoryRow->categoryId;
$articleCount = Article::model()->count($cntCriteria);

答案 2 :(得分:0)

还有一种方法可以做到这一点。当我们执行sql查询时,它将仅将结果作为数组返回。因此,我们可以使用count()函数获取行数,如下所示。

$output=User::model()->findAllBySql("select * from user");//User is a model belongs to the user table
$count_val=count($output);//$count_val has the value of number of rows in the output.