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:
..scritta al volocodice:SELECT * FROM captions INNER JOIN features ON captions.id = features.id_cap WHERE features.id_pro=$fid