Hallo, Am Tue, 25 Jun 2013, Sebastian Reinhardt schrieb: [..]
my $sth = $dbh->prepare(qq(SELECT PARTNO FROM Pricelist)); $sth->execute(); Wenn ich nun aber versuche anhand der Artikelnummer eine Datenzeile auszulesen, dann kommt nichts: foreach(@part_no) { my $tmp_var = $_; my $stmt = "SELECT * FROM Pricelist WHERE 'partno' = '$tmp_var'"; $sth = $dbh->prepare(qq(SELECT * FROM Pricelist WHERE 'PARTNO' = '$tmp_var')); $sth->execute(); print "Partno:".$_."=>"; while(my $row = $sth->fetchrow_array()) { foreach (@$row) { $_ = '' unless defined } print "@$row\n"; } $sth->finish(); print "\n"; } Es kommt nur: Partno:0000000015=>
Du verwendest nicht 'use warnings; use strict;'.
while(my $row = $sth->fetchrow_array())
hier holst du dir ein Array (bzw. das erste Element oder so, siehe nebenan), verwendest es dann aber als Arrayref: foreach (@$row) { $_ = '' unless defined } Siehe @row_ary = $sth->fetchrow_array; $ary_ref = $sth->fetchrow_arrayref; in man DBI. Ausserdem solltest du prepared statements verwenden: my $sth = $dbh->prepare("SELECT * FROM Pricelist WHERE 'PARTNO' = ?); $sth->execute($tmp_var); while(my $row = $sth->fetchrow_arrayref()) { print join(", ", @{$row}), "\n"; } $sth->finish(); print "\n"; Oder so. HTH, -dnh -- "Cynical" is a term invented by optimists to describe realists. -- Gregory Benford -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org