$connection = Yii::app()->db;
$command=$connection->createCommand($sqlStatement);
$rows=$command->queryAll();
我正在比较SQL运行上面的代码与在MySQL Workbench中运行相同的SQL。并且,两者返回不同的行数。
MySQL Workbench正在返回所有行。上面的代码总是返回一个小于总数的数字。
命令的限制为-1。我不确定还有什么要检查的。是否有一些Yii限制?限制行的内存约束? Yii中的某种缓存?
在上面的代码(在一堆SELECT语句的下游放置在.php脚本中)之前执行的先前SQL语句可能会影响这个吗?
我是Yii的新手,但不是SQL也不是MySQL,而是相当困惑。
答案 0 :(得分:0)
Listen queryAll()
返回一个数组,你需要迭代才能获得所有记录。
foreach($rows as $row){
//do something
}
尝试按部分查询:
$limit = 1000 ;
$passes = ceil( Yii::app()->db->createCommand( 'SELECT COUNT(*) FROM{{test_data}}' )->queryScalar() / $limit ) ;
for ( $pass = 0 ; $pass < $passes ; $pass++ ) {
$command = Yii::app()->db->createCommand()
->select('*')
->from( '{{test_data}}' )
->limit( $limit )
->offset( $pass * $limit ) ;
$result = $command->queryAll() ; // here is your peace of data
}
答案 1 :(得分:0)
这让我得到答案:Mysql "select * from" doesn't return all rows
事实证明,MySQL数据库是ISAM。在对数据库进行一些清理和恢复之后,查询开始返回所有行。