my %sql_data = ( id => "", aptname => $query->param('aptname'), aptnumber => $query->param('aptnumber'), available => $query->param('available'), onwaiting => $query->param('waitinglist'), appliedfor => $query->param('occupied'), applicant => $query->param('occupantname'), description => $query->param('aptdescription'), ); my $sql = q/INSERT INTO apartments (/.join(',', keys %sql_data).q/) VALUES (/.join(',', ('?') x keys %sql_data).q/)/; $sth = $dbh->prepare($sql) or die "prepare: $stmt: $DBI::errstr"; $sth->execute(values %sql_data) or die "execute: $stmt: $DBI::errstr";