0

以下是我的课程与方法:

class BidsInfoRepository extends EntityRepository
{
     public function findbidWinnerQuery($productId) {
              return $this->getEntityManager()
                        ->createQuery("SELECT w FROM ReverseAuctionReverseAuctionBundle:BidsInfo w where w.ProductInfo = ***$productId*** GROUP BY w.bAmount HAVING COUNT(w) = 1")
                        ->setMaxResults(1)     
                        ->getResult() 
                ;
    }
}

变量 $productId 具有以下用连字符分隔的格式值: 5cbfde50-50b9-11e5-9612-752c7cea21e5 ,

显然它不喜欢这种格式,实际上'cbdfe50'包含在用连字符分隔的字符串中,出于某种原因,我认为连字符会停止该过程,但我不知道如何让mysql处理分隔的长字符串用连字符代替返回我的问题标题中提到的错误。任何想法?谢谢。

ps 我也尝试过使用“like '$productId'”,但它不起作用。

4

1 回答 1

1

您只是忘记了引号:

"SELECT w FROM ReverseAuctionReverseAuctionBundle:BidsInfo w where w.ProductInfo = '5cbfde50-50b9-11e5-9612-752c7cea21e5' GROUP BY w.bAmount HAVING COUNT(w) = 1"

还要记住,您应该正确地转义 sql 查询中的字符串以避免 sql 注入。

于 2015-09-02T10:52:20.540 回答