I do not understand why you would repeatedly bind different values to the same parameter (number 1) within the foreach loop without calling $sth->execute. What do you expect to happen here?
It might be more instructive if you could provide a complete, self-contained executable script which clearly demonstrates the problem you face. In this code snippet there are too many unknowns for an outside viewer to debug it as it stands. It would also be useful to know which versions you are running (of perl, of DBI, of DBD::Pg and of the postgresql server).