由于official documentation没有说明如何使用他们的系统简单地“num_rows”,我需要一些帮助:如何获得结果集中的行数?
答案 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.