Dovresti fornire un elenco di argomenti, uno per ogni punto interrogativo, non un singolo argomento scalare che contiene le stringhe degli argomenti. Quando ho risposto alla tua domanda prima, ti ho detto di fare:
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
Dove $new_row
è la tua stringa segnaposto, non la tua lista di argomenti. Non:
$new_row .= "'" . param($field) . "', ";
...
$new_row .= "'$status'";
$sth->execute(qq($new_row)) or die $DBI::errstr;
Perché $new_row
conta come un argomento, poiché è uno scalare. Hai bisogno di un array o di un elenco della stessa lunghezza del numero di punti interrogativi.