Трябва да предоставите списък на аргументи, по един за всеки въпросителен знак, а не нито един скаларен аргумент, който съдържа низовете на аргументите. Когато отговорих на въпроса ви преди ти казах да направиш:
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
Където $new_row
е вашият заместващ низ, а не списъкът ви с аргументи. Не:
$new_row .= "'" . param($field) . "', ";
...
$new_row .= "'$status'";
$sth->execute(qq($new_row)) or die $DBI::errstr;
Тъй като $new_row
се брои като един аргумент, тъй като е скаларен. Имате нужда от масив или списък със същата дължина като броя на въпросниците.