Thread DBI in Wrapperklasse landet bei fetchrow in Endlosschleife
(5 answers)
Opened by cookie at 2017-11-24 17:24
Hallo in die Runde,
könnt ihr mir einen Hinweis geben, warum folgender Code nicht funktioniert? Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 package Kernel::DB; use strict; use warnings; use DBI; sub new { my ( $Type, %Param ) = @_; my $Self = {}; bless( $Self, $Type ); $Self->{DBUser} = 'xxx'; $Self->{DBPassword} = 'xxx'; $Self->{DBName} = 'xxx'; $Self->{DBConnectString} = 'DBI:mysql:database=' . $Self->{DBName}; $Self->{dbh} = DBI->connect($Self->{DBConnectString}, $Self->{DBUser}, $Self->{DBPassword}); return $Self; } sub prepare { my ( $Self, %Param ) = @_; my $Querystring = $Param{Query}; $Self->{query} = $Self->{dbh}->prepare($Querystring); } sub fetchrow_array { my ( $Self, %Param ) = @_; $Self->{query}->execute or die $Self->{query}->err_str; return $Self->{query}->fetchrow_array(); } sub do { my ( $Self, %Param ) = @_; my $Querystring = $Param{Query}; $Self->{dbh}->do($Querystring); } 1; Wenn ich jetzt folgendes aufrufe: Code (perl): (dl
)
1 2 3 4 5 6 7 8 my $DbObj = new Kernel::DB; $DbObj->prepare(Query => 'select * from user where lobbyname = "' . $Lobbyname . '"'); while(my @Rows = $DbObj->fetchrowarray()) { push @Userlist, $Rows[0]; } Endet dieser Code in einer Endlosschleife. Benutze ich meine Wrapperklasse nicht sondern mache es wie folgt: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 my $dbh = DBI->connect('DBI:mysql:xxxx', 'xxxxx', 'xxx') || die "ERROR: $DBI::errstr"; my $sth = $dbh->prepare('select * from user where name = "' . $username . '"'); $sth->execute; my $counter = 0; while(my @Rows = $sth->fetchrow_array()) { $counter++; } Funktioniert alles ohne Probleme... Ich sehe leider keinen Unterschied und erstehe nicht warum ich hier in einer Endlosschleife hängen bleibe. Danke für eure Hilfe! Last edited: 2017-11-24 17:29:35 +0100 (CET) |