Thread Zeile im FH wird durch eine Unterabfrage (~"if eof") der while-Schleife übersprungen (22 answers)
Opened by norvel at 2012-07-31 16:42

Muffi
 2012-08-01 11:18
#160382 #160382
User since
2012-07-18
1465 Artikel
BenutzerIn
[default_avatar]
Jetzt glaub ich hab ichs kapiert :)

Wenn du mein(e) Beispiele von oben nimmst und als @data z.B. Zeilen mit
Code (perl): (dl )
{ asset_id => ..., serial_nr => ... }


(ungetestet)
Code (perl): (dl )
1
2
3
4
5
my @data = naechstes_paeckchen();
if (@data) {
    my $query_out = join(' OR ', map { "a.asset_id = $_->{asset_id} and cc.serial_nr = $_->{serial_nr}" } @data);
    ...
}


Allerdings solltest du keine Werte direkt in eine SQL-Query einfügen, schon garnicht wenn die von aussen kommen. Du fängst dir damit eine sql-injection-lücke ein.

Lieber:
Code (perl): (dl )
1
2
3
4
for my $line (@data) {
    push @where, 'a.asset_id = ? and cc.serial_nr = ?';
    push @params, $line->{asset_id}, $line->{serial_nr};
}


und wie man die Fragezeichen und die params dann zusammenbringt steht im dbi-manual
1 + 1 = 10

View full thread Zeile im FH wird durch eine Unterabfrage (~"if eof") der while-Schleife übersprungen