Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: How to get only changed parameter names from CGI script on form submit?

by muba (Priest)
on Nov 24, 2015 at 00:41 UTC ( #1148456=note: print w/replies, xml ) Need Help??


in reply to [Solved]: How to get only changed parameter names from CGI script on form submit?

I am running DB queries for each of those parameters

Somehow I doubt that each of these parameters correspond to columns in different tables. Most likely, you'll only need to update one or two tables for each submit in most circumstances. So instead of updating the database for each parameter1, you could do one or two mass updates2

# 1 # (I don't know which module you're using for your $query->Dump expres +sion, # so I'll simply be using the old school CGI.pm here) use CGI 'param'; use DBI; my $dbh = DBI->connect(...) or die ...; my $id = param 'id'; # Hit the database with an UPDATE for every parameter for my $p (param) { next if $p eq 'id'; my $sql = sprintf("UPDATE mytable SET %s = ? WHERE id = ?", $p) $dbh->do($sql, undef, param($p), $id); }
# 2 # (again, just CGI.pm) use CGI 'param'; use DBI; my $dbh = DBI->connect(...) or die ...; my $id = param 'id'; my %update = map { $_ ne 'id' ? ($_ => param($_)) : () } param; my @bind = (); # First, build one large UDPATE statement # and collect the bind values while we're at it my $sql = "UPDATE mytable SET " . # Doing this from the top + of my head, join(", ", # untested, but it should + get the grep defined, map { # idea across if ($_ ne 'id') { push @bind, param($_); sprintf "%s = ?", $_ } else { undef } } param ) ; # And then hit the database with that UPDATE statement just once. $dbh->do($sql, undef, bind);

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (5)
As of 2019-04-22 16:15 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    I am most likely to install a new module from CPAN if:
















    Results (112 votes). Check out past polls.

    Notices?