2012-01-26 54 views
1

我想获得使用yii后面的sql语句的几个结果,但有一些错误.... !!!我可以使用yii CSqlDataProvider执行两个或多个sql语句吗?

$sql="SET @pStat=-1; SET @pdt=0; SELECT * FROM (SELECT !li.gen AS id,li.logAt, getDuration(gen,logAt) AS duration FROM os_loggerinfo li) AS a WHERE a.duration>0;"; 

$count=count(Yii::app()->db->createCommand($sql)->query()); 

$dataProvider=new CSqlDataProvider($sql, array(
      'totalItemCount'=>$count, 
      'pagination'=>array(
       'pageSize'=> 10, 
      ), 
     )); 

回答

1

您使用count(Yii::app()->db->createCommand($sql)->query());,我不知道,但我认为query()刚刚返回true或false。尝试使用queryAll(),或者如果它只是一个单行使用queryRow()

0
$sql="SET @pStat=-1; SET @pdt=0; SELECT |selectPart| FROM (SELECT !li.gen AS id,li.logAt, getDuration(gen,logAt) AS duration FROM os_loggerinfo li) AS a WHERE a.duration>0;"; 
$selectPart = 'COUNT(1) as cnt'; 
$count = Yii::app()->db->createCommand(str_replace('|selectPart|', $selectPart, $sql))->queryScalar(); 
$sql = str_replace('|selectPart|','*',$sql); 
$dataProvider=new CSqlDataProvider($sql, array(
     'totalItemCount'=>$count, 
     'pagination'=>array(
      'pageSize'=> 10, 
     ), 
    )); 
0

尝试使用CArrayDataProvider而不是CSqlDataProvider

$sql="SET @pStat=-1; SET @pdt=0; SELECT * FROM (SELECT !li.gen AS id,li.logAt, getDuration(gen,logAt) AS duration FROM os_loggerinfo li) AS a WHERE a.duration>0;"; 
$result=Yii::app()->db->createCommand($sql)->queryAll(); 
$count=count($result); 
$dataProvider=new CArrayDataProvider($result, array(
      'totalItemCount'=>$count, 
      'pagination'=>array(
       'pageSize'=> 10, 
      ), 
     )); 
相关问题