在 Yii 2 中执行查询时出现一般错误 SQLSTATE[HY000]

Gem*_*cen 4 yii yii2

这是我的代码:

$sql = "
        SET @run_balqty :=0;

        SELECT 
            transaction_date, 
            item_id, 
            item_description, 
            unit_id, 
            quantity,
            ( @run_balqty := @run_balqty + quantity ) AS balance_qty,
            reference_code
        FROM 
            `report_ledger` AS ledger
        WHERE
            item_id = 3147
        ORDER BY
            transaction_date ";

$query = Yii::$app->db->createCommand($sql)->queryAll();
Run Code Online (Sandbox Code Playgroud)

当我尝试运行这段代码时。我收到这个错误

SQLSTATE[HY000]:一般错误


现在..我的问题是:为什么我会收到此错误?我怎样才能让它运行?

需要帮忙。谢谢。

gmc*_*gmc 5

您正在尝试获取包含命令 ( SET @run_balqty :=0) 的查询结果,该命令不可“获取”。您必须首先单独执行该命令,然后才能调用queryAll()查询SELECT命令:

Yii::$app->db->createCommand("SET @run_balqty :=null;")->execute();

$sql = "
        SELECT 
            transaction_date, 
            item_id, 
            item_description, 
            unit_id, 
            quantity,
            ( @run_balqty := @run_balqty + quantity ) AS balance_qty,
            reference_code
        FROM 
            `report_ledger` AS ledger
        WHERE
            item_id = 3147
        ORDER BY
            transaction_date ";

$query = Yii::$app->db->createCommand($sql)->queryAll();
Run Code Online (Sandbox Code Playgroud)

PS:请小心使用该SET声明,请阅读此内容