आपको एक सूची . की आपूर्ति करनी है तर्कों की, प्रत्येक प्रश्नचिह्न के लिए एक, एक भी अदिश तर्क नहीं जिसमें तर्कों के तार हों। जब मैंने आपके प्रश्न का उत्तर दिया इससे पहले, मैंने आपको ऐसा करने के लिए कहा था:
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
एक तर्क के रूप में गिना जाता है, क्योंकि यह एक अदिश राशि है। आपको एक सरणी या समान लंबाई की सूची की आवश्यकता है जो प्रश्नवाचक चिह्नों की संख्या के समान है।