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 に答える