Ah. Well in that case you'll have to move the prepare() into the loop (or use do()) and use interpolation (with the usual caveats about NULLs, etc.)
The naive version would look like this:
while (<>) {
my $quantity = param("quantity");
my $gross_sales = param("gross_sales");
my $sql = qq/
insert into transaction_details(quantity, gross_sales)
values($quantity, $gross_sales)
/;
my $rv = $dbh->do($sql);
# check return value, etc.
}
You should of course check that the two input parameters are valid before submitting the SQL request.
Michael