se le due select devono intersecarsi sull'id di due tabelle diverse (a me questo pare di aver capito) potresti risolvere solo con una JOIN query in questo modo avrai un solo while:

codice:
SELECT * FROM captions  INNER JOIN features ON captions.id = features.id_cap WHERE features.id_pro=$fid
..scritta al volo