in reply to bind not working with DBI?

In your second example you have the following:
my @accounts = qw{ 118554 118555 118528 118529 118523 };
Each value in @accounts will be placed verbatim into your query at the location of '?'. The problem with this is that if the column (account_id) is a varchar (or some other non numeric) there will be no quotes passed to the query around the item placed into the location of '?'.

I recommend changing your array population line to the following:

my @accounts = qw{ '118554' '118555' '118528' '118529' '118523' };
Now the " ' " characters will be passed as well as the account number to your query. I'm not sure this is the fix for your problem, but it's worth a try.

-gnu