When you say "it just skips the fetchrow_array part", do you mean that it seems to run "without error" (and also without printing anything in the "while" loop or updating the other database)?
If that's what you mean, then you might need to check the return value from your $sth->execute call (and the "bind_columns" call). If the "prepare" call had failed, I think you would have gotten a full-blown failure with an error message - something to the effect of "can't call method 'execute' on an undefined object." If the prepare succeeds but the execute fails for some reason, there might not be any automatic notification about that.
When you run the query manually, do you happen to notice whether the current table columns match what your script assumes them to be?