Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re: DB Update w/ Hash

by ferrency (Deacon)
on Sep 05, 2000 at 19:53 UTC ( [id://31132]=note: print w/replies, xml ) Need Help??


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

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://31132]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others about the Monastery: (4)
As of 2024-04-24 02:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found