If you have done this a million times, I am afraid that you could end up with a million errors.
Your statement
my @data = $sth->fetchrow_array;
will only fetch the first row from the result set. After which, if you don't call $sth->finish(), you'll end up with some memory being allocated and unreleased.
Check the above answer by Chmrr for a correct use of fetchrow_array with while.
BTW, your comment that the enquiring monk should B... OFF is not going to do much good for his problem.
_ _ _ _
(_|| | |(_|><
_|
For every complex problem, there is a solution that is simple, neat, and wrong
H. L. Mencken