【问题标题】:SQLSTATE[HY000]: General error with MySQL variable in ZF1SQLSTATE[HY000]:ZF1 中 MySQL 变量的一般错误
【发布时间】:2014-03-29 23:00:52
【问题描述】:

我有一个 MySQL 查询,它在 PhpMyAdmin 中完美运行,但在 Zend Framework 1.12 及其fetchAll() 方法中使用时会抛出一个SQLSTATE[HY000]: General error。这里是:

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-&gt;fetchAll();这一行,有没有其他的ZF方法可以和SET @var := value一起使用?

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

【问题讨论】:

    标签: mysql zend-framework fetchall


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-06-17
      • 2012-10-24
      • 2012-10-25
      • 2014-12-31
      • 2021-09-10
      • 1970-01-01
      • 2013-06-20
      相关资源
      最近更新 更多