簡體   English   中英

如何在理論中使用mysql變量

[英]How to use mysql variables in doctrine

https://stackoverflow.com/a/12772507/1507546

我想通過學說執行此查詢,但出現以下錯誤

[Doctrine \\ DBAL \\ Driver \\ PDOException] SQLSTATE [42000]:語法錯誤或訪問沖突:1064您的SQL語法有錯誤;該錯誤可能會導致錯誤。 檢查與您的MariaDB服務器版本相對應的手冊以在第1行的'@counter:= 0'附近使用正確的語法

這是我的代碼

$sql = <<<S
    SET @counter = 0; 
    Select sub.orderid,sub.value,(@counter := @counter +1) as counter
    FROM
    (
        select orderid, 
          round(sum(unitprice * quantity),2) as value
        from order_details
        group by orderid
    ) sub
    order by 2 desc
    limit 10
S;

stmt = $this->_em->getConnection()->prepare($sql);

$stmt->execute();

return $stmt->fetchAll(AbstractQuery::HYDRATE_ARRAY);

大多數SQL API在沒有額外配置的情況下都不允許多個語句。 您需要將它們作為單獨的語句傳遞:

$this->_em->getConnection()->exec("SET @counter = 0"); // May need tweaking, I'm not familiar with Doctrine
$sql = <<<S
    Select sub.orderid,sub.value,(@counter := @counter +1) as counter
    FROM
    (
        select orderid, 
          round(sum(unitprice * quantity),2) as value
        from order_details
        group by orderid
    ) sub
    order by 2 desc
    limit 10
S;

stmt = $this->_em->getConnection()->prepare($sql);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM