Het is de bedoeling dat je een lijst aanlevert argumenten, één voor elk vraagteken, geen enkel scalair argument dat de strings van de argumenten bevat. Toen ik uw vraag beantwoordde eerder zei ik dat je het volgende moest doen:
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
Waar $new_row
is uw tijdelijke aanduiding-tekenreeks, niet uw lijst met argumenten. Niet:
$new_row .= "'" . param($field) . "', ";
...
$new_row .= "'$status'";
$sth->execute(qq($new_row)) or die $DBI::errstr;
Omdat $new_row
telt als één argument, omdat het een scalair is. Je hebt een array of lijst nodig van dezelfde lengte als het aantal vraagtekens.