这是我的代码:
$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]:一般错误
现在..我的问题是:为什么我会收到此错误?我怎样才能让它运行?
需要帮忙。谢谢。
您正在尝试获取包含命令 ( 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声明,请阅读此内容。