2012-10-18 59 views
1

Zend的配置是:resources.db.adapter = 「PDO_MYSQL」MySQL查詢與MySQL可變Zend框架不工作1

即得到消息查詢:SQLSTATE [HY000]:常規錯誤

$db = Zend_Db_Table::getDefaultAdapter(); 
     $db->setFetchMode(Zend_Db::FETCH_ASSOC);  


     $qry = $db->fetchAll(" SET @rank = 0 ; 
           SELECT 
            @rank := @rank +1 AS rank, 
            SUM(user_scoring_data.user_points) AS user_points, 
            league_team.user_id 

           FROM league_team 
           RIGHT JOIN user_scoring_data ON league_team.league_team_id = user_scoring_data.league_team_id 

           WHERE league_id = '$league_id' GROUP BY user_scoring_data.league_team_id 
           ORDER BY user_points DESC" 
          ); 

如果我刪除這個變量,它的工作原理:

$db->fetchAll(" 
           SELECT 
            SUM(user_scoring_data.user_points) AS user_points, 
            league_team.user_id 

           FROM league_team 
           RIGHT JOIN user_scoring_data ON league_team.league_team_id = user_scoring_data.league_team_id 

           WHERE league_id = '$league_id' GROUP BY user_scoring_data.league_team_id 
           ORDER BY user_points DESC" 
          ); 

*注:查詢是在phpMyAdmin直接測試,沒有錯誤。

回答

6

似乎在MySql中設置一個變量被認爲是一個單獨的查詢。 (取*()不能處理多個呼叫)

因此對於那些有這種問題:

$db->query("SET @rank = 0 ;"); 

$db->fetchAll("SELECT 
            @rank := @rank +1 AS rank, 
            SUM(user_scoring_data.user_points) AS user_points, 
            league_team.user_id 

           FROM league_team 
           RIGHT JOIN user_scoring_data ON league_team.league_team_id = user_scoring_data.league_team_id 

           WHERE league_id = '$league_id' GROUP BY user_scoring_data.league_team_id 
           ORDER BY user_points DESC" 
          );