根据 DBAL 文档,只有 setFirstResult 和 setMaxResults 这两种方法被设计为对 SQL 注入是安全的。但是在QueryBuilder部分,他们提到要安全地使用QueryBuilder,我们必须使用setParameter方法传递用户输入。所以我看到了2种方法来做到这一点,但我不知道它们是否有真正的区别:方式1:
$qb->select('USR_id', 'USR_email')
->from('T_user_USR')
->where('USR_email = ? ')
->setParameter(0, $email);
$stmtQb = $qb->execute();
$results = $stmtQb->fetchAll();
方式 2 :
$qb->select('USR_id', 'USR_email')
->from('T_user_USR')
->where('USR_email = ? ');
$stmtQb = $dbal->prepare($qb->getSQL());
$stmtQb->bindValue(1, $email);
$stmtQb->execute();
$results = $stmtQb->fetchAll();
最好的方法是什么?提前致谢
呼唤远方