繁体   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