Symfony 使用QueryBuilder表达式是否安全?

Symfony 使用QueryBuilder表达式是否安全?,symfony,doctrine-orm,Symfony,Doctrine Orm,有几种方法可以创建相同的查询: $qb = $this->createQueryBuilder('u'); $qb ->select('COUNT(u.id)') ->where('u.email = :email')) ->setParameter('email', $email) ->getQuery(); 以及: 哪种情况更适合使用,哪种情况对于SQL注入更安全、更稳定?setParameter将使用预先准备好的语句,因此是安

有几种方法可以创建相同的查询:

$qb = $this->createQueryBuilder('u');
$qb
    ->select('COUNT(u.id)')
    ->where('u.email = :email'))
    ->setParameter('email', $email)
    ->getQuery();
以及:


哪种情况更适合使用,哪种情况对于SQL注入更安全、更稳定?

setParameter
将使用预先准备好的语句,因此是安全的,而
$qb->expr()->eq()
不会。@Touki谢谢,但我如何确保第二个示例的安全?
where($qb->expr()->eq('u.email','email'))->setParameter('e':email','email'))
?@Touki,我想它一定有用,谢谢!我尝试使用itI,强烈建议阅读本文,尤其是针对用户输入的安全和不安全API部分。
$qb = $this->createQueryBuilder('u');
$qb
    ->select('COUNT(u.id)')
    ->where($qb->expr()->eq('u.email', $email))
    ->getQuery();