2017-04-10 135 views
1

执行查询时,这里是我的代码:一般错误SQLSTATE [HY000] Yii中2

$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(); 

当我试图运行此代码。我得到这个错误

SQLSTATE [HY000]:常规错误


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

需要帮助。谢谢。

回答

2

您正试图获取包含命令(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(); 

P.S .:使用SET声明要小心,阅读this

相关问题