Sie sollen eine Liste bereitstellen von Argumenten, eines für jedes Fragezeichen, kein einzelnes skalares Argument, das die Zeichenfolgen der Argumente enthält. Als ich Ihre Frage beantwortete zuvor habe ich dir gesagt, dass du Folgendes tun sollst:
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
Wobei $new_row
ist Ihre Platzhalterzeichenfolge, nicht Ihre Argumentliste. Nicht:
$new_row .= "'" . param($field) . "', ";
...
$new_row .= "'$status'";
$sth->execute(qq($new_row)) or die $DBI::errstr;
Denn $new_row
zählt als ein Argument, da es ein Skalar ist. Sie benötigen ein Array oder eine Liste mit der gleichen Länge wie die Anzahl der Fragezeichen.