[perl] while in een while loop met mysql

Pagina: 1
Acties:

  • BKJ
  • Registratie: April 2000
  • Laatst online: 21-05 15:04
Ik heb de volgende code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$dbh = DBI->connect ("DBI:mysql:host=localhost;database=test", "user", "passwd");
$sth = $dbh->prepare ("SELECT id,kop FROM nieuws WHERE timestamp=\"$timestamp\" LIMIT 25");
$sth->execute();

$dbh2 = DBI->connect ("DBI:mysql:host=localhost;database=test", "user", "passwd");
$sth2 = $dbh2->prepare ("SELECT id,kop FROM nieuws WHERE timestamp=\"$timestamp\" LIMIT 25");
$sth2->execute();

while (@val = $sth->fetchrow_array()) {

        while (@val2 = $sth2->fetchrow_array()) {
         do something;
         }

print "$val[0]\n";

}


Ik krijg de volgende melding:

DBD::mysql::st fetchrow_array failed: fetch() without execute() at similarity.cgi line 11.


Ik heb toch een execute? Ik heb namelijk geen problemen als ik de 2e query binnen de whileloop zet. Maar dat kost toch ontzettend veel tijd? Dit is toch veel sneller?? Waarom werkt dit niet?

[ Voor 22% gewijzigd door BKJ op 08-06-2004 20:50 ]

Kamer huren


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 04:19
Het zou moeten kunnen werken, maar blijkbaar gaat er iets mis. Waarom gebruik je eigenlijk twee connecties? Je kunt ook twee parallelle queries doen via een enkele connectie. Misschien dat dat het probleem toevallig ook verhelpt:
Perl:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$dbh = DBI->connect ("DBI:mysql:host=localhost;database=test", "user", "passwd");

$sth = $dbh->prepare ("SELECT id,kop FROM nieuws WHERE timestamp=\"$timestamp\" LIMIT 25");
$sth->execute();

$sth2 = $dbh->prepare ("SELECT id,kop FROM nieuws WHERE timestamp=\"$timestamp\" LIMIT 25");
$sth2->execute();

while (@val = $sth->fetchrow_array()) {

        while (@val2 = $sth2->fetchrow_array()) {

         }

}

  • BKJ
  • Registratie: April 2000
  • Laatst online: 21-05 15:04
Soultaker schreef op 08 juni 2004 @ 21:03:
Het zou moeten kunnen werken, maar blijkbaar gaat er iets mis. Waarom gebruik je eigenlijk twee connecties? Je kunt ook twee parallelle queries doen via een enkele connectie. Misschien dat dat het probleem toevallig ook verhelpt:
Nope....nog steeds dezelfde foutmelding...vaag toch dit?

Kamer huren


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 21-05 14:59

pjvandesande

GC.Collect(head);

Waarom selecteer je 2x hetzelfde?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12:00

Janoz

Moderator Devschuur®

!litemod

Als de buitenste lus 1x doorlopen is is de resultset die in de binnenste lus wordt doorlopen al helemaal leeg. sth2 heeft geen resultaten meer als je voor de 2e keer in die lus komt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'