由于官方文档没有说明如何使用他们的系统简单地执行“num_rows”,因此我需要一些帮助:如何获取结果集中的行数?
问问题
12836 次
3 回答
14
假设:
$connection=Yii::app()->db;
$command=$connection->createCommand($sql);
这将适用于插入、更新和删除:
$rowCount=$command->execute();
execute():执行非查询 SQL 语句,如 INSERT、UPDATE 和 DELETE。如果成功,则返回受执行影响的行数。
对于选择,您可以执行以下操作:
$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”来获取行数。
于 2012-10-18T17:22:57.503 回答
5
ActiveRecord 有可以使用的计数方法。
$cntCriteria = new CDbCriteria();
$cntCriteria->condition = "categoryId = :categoryId";
$cntCriteria->params[':categoryId'] = $categoryRow->categoryId;
$articleCount = Article::model()->count($cntCriteria);
于 2013-05-04T07:06:30.003 回答
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.
于 2014-07-30T05:27:57.087 回答