in reply to DB Update w/ Hash

I believe MySQL doesn't like to allow you to bind to column names.

update mytable set ? = 'blah'; # disallowed update mytable set myfield = ?; # allowed
Also, looping over multiple fields and executing one query for each is most likley going to be a huge performance loss. You'd probably be better off constructing one query, even if you need to prepare it every time. You might try something like this:

my %user_info; my $query = "update tUser Set ". (join ", " map {"$_ = $user_info{$_}"} keys %user_info). " where UserID = $user_info{UserID}";
This uses interpolation instead of query binding. If you always specify your mysql columns in the same order, you could use binding instead:

# Warning, untested code, to be used for inspiration only my %user_info; my $query = "update tUser Set ". (join ", " map {"$_ = ?"} sort keys %user_info). " where UserID = $user_info{UserID}"; my $sth = $dbh->prepare($query) or die; $sth->execute(map {$user_info{$_}} sort keys %user_info);
Alan