in reply to Re: Database field names in code
in thread Database field names in code

Another thing I like to avoid is the dreaded and error-prone counting of placeholders. To accomplish this goal I build an array of fields I want, and use it multiple times. Example:

my @keys = qw(time_value hour_24 minute second hour_12 am_pm); my %time = ( time_value => "2:30:12pm", hour_24 => 14, hour_12 => 2, minute => 30, second => 12, am_pm => "pm" ); my $sql = "INSERT INTO" . " time (" . join(",", @keys) . ")" . " VALUES (" . join(",", ('?') x @keys) . ")"; my $sth = $dbh->prepare($sql); $sth->execute(@time{@keys});

Note I keep the values I'm executing in a hash with keys matching the field names. This allows me to use a hash slice so even the execute() call is guaranteed to match.