【发布时间】:2020-05-05 04:53:39
【问题描述】:
根据 DBAL 文档,只有方法 setFirstResult 和 setMaxResults 旨在防止 SQL 注入。但在 QueryBuilder 部分,他们提到要安全地使用 QueryBuilder,我们必须使用 setParameter 方法传递用户输入。 所以我看到了两种方法,但我不知道它们是否有真正的区别: 方式一:
$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();
最好的方法是什么? 提前致谢
【问题讨论】:
标签: php doctrine sql-injection query-builder dbal