1

Doctrine2に次のクエリがあります。

$dql->select('um', 'u', 'r')
                    ->from('AcmeComBundle:UserMenu', 'um')
                    ->join('um.user', 'u')
                    ->join('u.role', 'r')
                    ->where('u.ced = '.$ced);

常に参照して問題が発生しました:

[Semantical Error] line 0, col 116 near 'XXXXX': Error: 'XXXXX' is not defined.

XXXXXから$cedです。

何か案が?

4

3 に答える 3

2

「$ced」をwhereステートメントに直接配置するのではなく、バインドされたパラメーターを使用する必要があります。whereステートメントを次のように変更します。

 $dql->where('u.ced = :ced')->setParameter('ced', $ced);

そうしないと、生成された{D / S} QLが無効になるだけでなく、インジェクション攻撃に対して脆弱になります。

于 2012-06-26T01:29:43.467 に答える
0

I'm really stupid.

The solution is:

$dql->select('um', 'u', 'r')
                ->from('AcmeComBundle:UserMenu', 'um')
                ->join('um.user', 'u')
                ->join('u.role', 'r')
                ->where("u.ced = '".$ced."'");

Thanks guys for your answers.

于 2012-06-26T01:55:39.413 に答える
0

エラーが続く場合は、Doctrine 2.1のドキュメントに記載されているように、この方法で試すことができます。

$em = $this->getEntityManager;
$qb = $em->createQueryBuilder;

$qb->select(array('um', 'u', 'r'))
   ->from('Sdz\BlogBundle\Entity\Article', 'a')
   ->leftJoin('um.user', 'u')
   ->leftJoin('u.role', 'r')
   ->where('u.ced = '.$ced);

$query = $qb->getQuery();
$results = $query->getResult();

return $results;
于 2012-06-26T01:18:27.650 に答える