Du ska tillhandahålla en lista av argument, ett för varje frågetecken, inte ett enda skalärt argument som innehåller argumentens strängar. När jag svarade på din fråga innan sa jag åt dig att göra:
my @values = map param($_), @account_field_order; # add values to array
push @values, $status; # for simplicity
$new_row = join ", ", ("?") x @values; # add ? for each value
... # basically same code as before, except the execute statement:
$sth->execute(@values); # arguments given will be inserted at placeholders
Där $new_row
är din platshållarsträng, inte din argumentlista. Inte:
$new_row .= "'" . param($field) . "', ";
...
$new_row .= "'$status'";
$sth->execute(qq($new_row)) or die $DBI::errstr;
Eftersom $new_row
räknas som ett argument, eftersom det är en skalär. Du behöver en array eller lista med samma längd som antalet frågetecken.