Je voulais juste ajouter à cela, j'avais des frustrations similaires dues à l'absence de message d'erreur.
Pour empêcher PDO d'échouer silencieusement, vous pouvez définir le mode d'erreur sur la connexion PDO.
$dbh = new PDO();
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Il y a aussi PDO::ERRMODE_WARNING
si vous voulez des erreurs mais continuez quand même.