2014-03-29 31 views
1

我有一个MySQL查询,在PhpMyAdmin中完美工作,但在Zend Framework 1.12及其方法中使用时引发SQLSTATE[HY000]: General error。那就是:SQLSTATE [HY000]:ZF1中MySQL变量的一般错误

SET @csum := 0; 
SELECT s1.Date, (@csum := @csum + s1.total) as cumulative_sum 
FROM (
     SELECT c.datefield AS Date, IFNULL(SUM(subscription_total),0) AS total 
     FROM subscription s 
     RIGHT JOIN calendar c 
     ON c.datefield = DATE(subscription_date) 
     WHERE (c.datefield BETWEEN 
      (SELECT MIN(DATE(subscription_date)) FROM subscription) 
      AND 
      NOW() 
     ) 
     GROUP BY DATE 
    ) AS s1 

如果我删除了SET声明,但我需要设置一个MySQL变量,否则cumulative_sum将只是NULL值的语句不返回任何错误。下面是该方法的代码:

public function findCumulativeCashflow($statut) 
{ 
    $db = $this->_getDbTable(); 

    $dbAdapter = new Zend_Db_Adapter_Pdo_Mysql($db->getAdapter()->getConfig()); 

    $sql = '<SQL statement above>'; 

    $statement = $dbAdapter->query($sql); 

    $rows = $statement->fetchAll(); 

    return $rows; 
} 

错误点$rows = $statement->fetchAll();线,有另一种方法ZF与SET @var := value使用?

任何想法将不胜感激。 谢谢!

回答

2

根据this question,我需要使用另一个查询,因为fetchAll()无法处理多个查询。

因此,我需要设置MySQL变量$dbAdapter->query('SET @csum := 0;');,然后执行主查询。

相关问题