Hallo,
my $dbh = DBI->connect($data_source,$username,$password) || die "Keine Verbindung zum mySQL-Server: $DBI::errstr\n";
my $statement = "select * from sets";
Wenn ich den Zusammenhang betrachte, wäre es besser, Du schreibst
my $statement = "select bestnr from sets";
(das ist jetzt aber unabhängig von der Programmiersprache. Es sollten sowieso nur jene Tabellenfelder abgefragt werden, die auch wirklich benötigt werden)
my $sth = $dbh->prepare($statement) || die $dbh->errstr;
my $success = $sth->execute();
Auch hier eine Anregung: Du prüfst zwar den connect und das prepare aber beim execute nimmst Du jetzt an, daß es funktionierte. ABer auch das kann in die Hose gehen. Also solltest Du auch hier eine Fehlerbehandlung einbauen.
while (my ($bestnr) = $sth->fetchrow_array)
{
print $bestnr;
}
-> soweit so gut, doch statt der erhofften spalte bestnr bringt er mir nur wirre zahlen her... 12107342397192837193131289371297319237 [...]
Diese 'wirren Zahlen' sind einfach eine Aneinanderreihung aller Bestellnummern, welche Du von der Datenbank erhalten hast.
Das ist nähmlich das was Du mit
print $bestnr;
erreichst. Es werden einfach nur die Bestellnummern ausgegeben.
Der Grund: Perl gibt standardmäßig beim print die übergebenen Werte (hier $bestnr) aus, und zwar ohne irgendeiner Formatierung.
Willst Du beispielsweise jeden Wert in einer eigenen Zeile, dann kannst Du schreiben:
while (my ($bestnr) = $sth->fetchrow_array)
{
print "$bestnr\n";
}
Was es mit den " und dem \n auf sich hat, kannst Du ja in der Perl-Dokumentation nachlesen (perldoc perlop, Kapitel 'Quote and Quote-like Operators').
Und wie das genau mit dem print funktioniert findest Du unter (perldoc -f print)
Grüße
Klaus
PS.: Ach ja, für die ganzen perldoc dinger verwendest Du am besten eine Command-shell. Unter Windows heißt das ganze Eingabeaufforderung. Und falls Du unter Windows arbeitest und den PErl-Port von Activestate verwendest, gibt da auch noch die HTML-Dokumentation in der Du auch alles findest.