Согласно документации 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();
Что лучше способ сделать это? Заранее спасибо