Hallo Zusammen,
ich hatte das vor ein paar Tagen schonmal gefragt, bekam aber keine Antwort... daher hoffe ich das mir jetzt jemand helfen kann (vielleicht wurde das erste Posting auch überlesen...)
Also, folgender Code besteht:
my (@qp,@qq,@qe) = ("");
foreach (@{$conf->{rg}->{ext_data}}) {push (@qq,"?",",");}
foreach (@{$conf->{rg}->{ext_data}}) {push (@qp,"$_",",");}
foreach (@{$conf->{rg}->{ext_data}}) {push (@qe,"$input->{$_}",",");}
pop @qq;
pop @qp;
pop @qe;
my $sth = $dbh->prepare(" INSERT INTO $iconf->{dbt}->{ext_data} (id_key,@qp) VALUES (?,@qq) ");
$sth->execute($max_id,@qe);
---
natürlich besteht eine DB Verdinung und die Arrays sind korrekt gefüllt (hab das auch testweise ausgeben lassen).
nun zum Problem...
@qp und @qq werden so interpretiert das die darin befindlichen Werte anstelle der @qp bzw. @qq Arrays gesehen werdn... bei @qp sind das die spaltennamen mit kommas, bei @qq sind das die Fragezeichen.
Das funktioniert also... @qe hingegen wird als eine einzige Variable gesehen, was dann natürlich zu einem Fehler führt (execute called with 2 bind variables when 8 are needed)
ich hab auch schon versucht das mit referenzen auf die Arrays das zu ändern... hatte aber den gleichen Effekt...
nun meine Frage dazu... wie bekomme ich das so hin das es funktioniert... es ist sehr wichtig das die spaltennamen sowie die fragezeichung und dann halt auch der content vollkommen variablen sind...
Ich hoffe das mir da jemand helfen kann...
Schonmal danke, Sequa