Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]583[/thread]

Wieso läuft dieses Skript unendlich lange?! (Seite 2)



<< |< 1 2 >| >> 19 Einträge, 2 Seiten
renee
 2005-09-27 12:15
#5700 #5700
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dein abgeänderter Code liefert Dir wieder nur den ersten selektierten Eintrag. Und da Du die Hashreferenz immer wieder überprüfst, wird das wieder in einer Endlosschleife enden!

Lass Dir doch mal mit dem CPAN:Data::Dumper in der while-Schleife den Inhalt von $row_ref ausgeben. Dann wirst Du erkennen, dass der Inhalt immer gleich bleibt!

Du gibst ja in der Methode nicht den Cursor auf die Ergebnistabelle zurück, sondern nur einen Eintrag!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2005-09-27 12:16
#5701 #5701
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=raprezent,27.09.2005, 10:15][quote=renee,27.09.2005, 10:12]Bitte benute die [code]-Tags![/quote]
Ich habe sie absichtlich nicht benutz dass ich text fett anzeigen lassen kann .. dass du gleich siehst was ich geändert habe ..[/quote]
ok... Ich habe sie trotzdem eingefügt, damit der Code lesbarer wird...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
raprezent
 2005-09-27 12:24
#5702 #5702
User since
2005-09-27
12 Artikel
BenutzerIn
[default_avatar]
Wenn ich diesen Code hier von dir ausführe wird

Can't call method "execute" on an undefined value at /usr/httpd/cgi-bin/mysql.pl line 22.

ausgegeben

Code: (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
#!/usr/bin/perl -w
use CGI::Carp qw(fatalsToBrowser);
use DBI;

#Variabeln Deklarierung
my $dbname="cdliste";
my $username="root";
my $pw="123";
my $db = "DBI:mysql:$dbname";

#Die Verbindung zur Datenbank wird hergestellt
my $dbh = DBI->connect($db, $username, $pw, { RaiseError => 1 }) || die("Kann DB nicht öffnen!");




sub selecthashref{
my ($statement,@array) = @_;
unless(my $sth = $dbh->prepare( $statement)){
die $dbh->err().": ".$dbh->errstr();
}
$sth->execute() or die $dbh->errstr();
while(my $hashref = $sth->fetchrow_hashref()){
push(@array,$hashref);
}
return \@array;
}


#Legt den Dokumenttypen fest
print "Content-type: text/html; charset=iso-8859-1\n\n";

foreach my $row_ref(@{selecthashref("SELECT * FROM ordner ORDER BY ordnername ASC")}){

print "$row_ref->{ordnerid}\n";

}
renee
 2005-09-27 12:34
#5703 #5703
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
sub selecthashref{
my ($statement,@array) = @_;
my $sth = $dbh->prepare( $statement) or die $dbh->err().": ".$dbh->errstr();
$sth->execute() or die $dbh->errstr();
while(my $hashref = $sth->fetchrow_hashref()){
push(@array,$hashref);
}
return \@array;
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
raprezent
 2005-09-27 12:36
#5704 #5704
User since
2005-09-27
12 Artikel
BenutzerIn
[default_avatar]
So funktionierts!!

Ich danke dir recht herzlichst für die super Hilfe!! .. Bis zum nächsten Problem :)

Code: (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
#!/usr/bin/perl -w
use CGI::Carp qw(fatalsToBrowser);
use DBI;

#Variabeln Deklarierung
my $dbname="cdliste";
my $username="root";
my $pw="123";
my $db = "DBI:mysql:$dbname";

#Die Verbindung zur Datenbank wird hergestellt
my $dbh = DBI->connect($db, $username, $pw, { RaiseError => 1 }) || die("Kann DB nicht öffnen!");




sub selecthashref{
my ($statement,@array) = @_;
$sth = $dbh->prepare( $statement);
$sth->execute() or die $dbh->errstr();
while(my $hashref = $sth->fetchrow_hashref()){
push(@array,$hashref);
}
return \@array;
}


#Legt den Dokumenttypen fest
print "Content-type: text/html; charset=iso-8859-1\n\n";

foreach my $row_ref(@{selecthashref("SELECT * FROM ordner ORDER BY ordnername ASC")}){

print "$row_ref->{ordnerid}\n";

}
raprezent
 2005-10-03 11:08
#5705 #5705
User since
2005-09-27
12 Artikel
BenutzerIn
[default_avatar]
Hallo ich bins nochmals

wie kann ich $row_ref zu einem hashref machen ohne foreach??

Code: (dl )
1
2
3
4
5
foreach my $row_ref(@{selecthashref("SELECT * FROM ordner ORDER BY ordnername ASC")}){

print "$row_ref->{ordnerid}\n";

}


also ich benötige keine schleife da es nur einen eintrag enthalten wird. wie kann ich das nun $row_ref zuweisen, damit ich nachher die daten wieder mit $row_ref->{ordnerid} abrufen kann??
renee
 2005-10-03 13:54
#5706 #5706
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Kannst Du Dich etwas genauer äußern??

Vielleicht meinst Du sowas:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
[...]
sub selectsinglehashref{
my ($statement) = @_;
$sth = $dbh->prepare( $statement);
$sth->execute() or die $dbh->errstr();
my $hashref = $sth->fetchrow_hashref();
return $hashref;
}

my $row_ref = selectsinglehashref("select-statement");
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Strat
 2005-10-03 14:47
#5707 #5707
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
wenn nur eine zeile zurueck gegeben wird, bevorzuge ich selectrow_* oder so, z.B.
Code: (dl )
1
2
my $hashref = $db->selectrow_hashref($statement)
or die "Error in executing sql: $DBI::errstr\n\t$statement\n";

oder aehnlich
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
raprezent
 2005-10-03 15:01
#5708 #5708
User since
2005-09-27
12 Artikel
BenutzerIn
[default_avatar]
[quote=renee,03.10.2005, 11:54]Kannst Du Dich etwas genauer äußern??

Vielleicht meinst Du sowas:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
[...]
sub selectsinglehashref{
my ($statement) = @_;
$sth = $dbh->prepare( $statement);
$sth->execute() or die $dbh->errstr();
my $hashref = $sth->fetchrow_hashref();
return $hashref;
}

my $row_ref = selectsinglehashref("select-statement");
[/quote]
Ja so habe ich es schlussendlich auch gelöst .. ich dachte es ginge einfacher ....
<< |< 1 2 >| >> 19 Einträge, 2 Seiten



View all threads created 2005-09-27 11:34.