Предотвратить SQL Injection без использования bindParam?
С помощью небольшой магии и короткого синтаксиса код можно еще больше сократить$sql = 'SELECT * FROM users WHERE email = ?';
$rows = $db->prepare($sql)->execute([$email])->fetchAll();
Это равносильно:$sql = $db->prepare('"SELECT * FROM users WHERE email = :email');
$sql->bindParam(':email', $email, PDO::PARAM_STR);
$sql->execute();
$rows = $sql->fetchAll();
То есть все параметры будут расцениваться как строки.