Halihallo Harry
Wie muß jetzt meine Schleife aussehen?
Genau so, wie sie jetzt aussieht. Vorausgesetzt sie funktionierte
vorher.
Derzeit bekomme ich einen Fehler:
DBD::mysql::st execute failed: Commands out of sync; You can't run this command now at.....
http://dev.mysql.com/doc/mysql/de/commands-out-of-sync.html
$sth immer mit $sth->finish() beenden, bevor eine neue Abfrage ge-
startet wird.
Aufgrund des Fehlers gehe ich davon aus, dass du in der While-
Schleife noch andere Queries in der Datenbank absetzt...
Das Problem ist, dass mysql nur einen Server-Cache pro
Verbindungskennung anlegt. Sprich: Es kann zur selben Zeit nur einen
mysql_use_result-Query bearbeitet werden und dieser schliesst IMO
sogar mysql_store_result-Queries aus.
Die Lösung:
Entweder du kannst den Programmfluss so abändern, dass nur ein
aktives Statement zur selben Zeit bearbeitet wird.
Oder du öffnest eine zweite Verbindung zur Datenbank
(my $dbh2=DBI->connect(...)) und setzt dort die Queries innerhalb
der while-Schleife ab.
Also:
my $dbh = DBI->connect(...);
my $dbh2= DBI->connect(...);
my $sth = $dbh->prepare(..., { mysql_use_result => 1 });
$sth->execute();
while ( my @row = $sth->fetchrow_array() ) {
# do sth with @row
my $sth2 = $dbh2->prepare('other_query');
$sth2->execute();
}
while (@hitdata = $hits->fetchrow_array)
muß ich jetzt anders machen, oder?
Nein.
Viele Grüsse
Philipp