Solo quería agregar a esto, tenía frustraciones similares por la falta de un mensaje de error.
Para evitar que PDO falle silenciosamente, puede configurar el modo de error en la conexión PDO.
$dbh = new PDO();
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
También hay PDO::ERRMODE_WARNING
si desea errores pero aún así continúe.