my $statement = "Insert into TABLE (name, date, type, federal, active) values( ?, ?, ?, ?, ? ); $sth = $dbh->prepare( $statement ); foreach my $name ( keys %holidays ) { $sth->bind_param( 1, $name ); my $i = 2; $sth->bind_param( $i++, $holidays->{$name}->{$_} ) foreach keys %{$holidays->{$name}}; $sth->execute(); # check errors here too } #### my $statement = "Insert into TABLE (name, date, type, federal, active) values( :name, :date, :type, :federal, :active ); $sth = $dbh->prepare( $statement ); foreach my $name ( keys %holidays ) { $sth->bind_param( ':name', $name ); $sth->bind_param( ':'.$_, $holidays->{$name}->{$_} ) foreach keys %{$holidays->{$name}}; $sth->execute(); # check errors here too }