Hallo!
Und noch eine Frage:
Ich finde in meinen Errorlogfiles des Webservers diesen Eintrag.
---schnipp---
DBI::db=HASH(0x200b570)->disconnect invalidates 1 active statement handle (either destroy statement handles or call finish on them before disconnecting) at ...
---schnipp---
Weil mich das in den Wahnsinn treibt, habe ich versucht herauszubekommen, woran das liegen könnte.
Ich logge sämtliche Datenbankaufrufe mit und sehe folgendes:
Öffnen des $db-Handlers:
DBI::db=HASH(0x200b4f8)
Abfrage, die über diesen Handler läuft:
DBI::db=HASH(0x200b4f8) => SELECT row FROM table
Schliessen des Handlers:
DBI::db=HASH(0x200b4f8)
Der eigentlich Code sieht so aus und liefert genau eine Zeile im Ergebnis zurück:
&mysql_connect($db)
my $sqlStatement = "SELECT row FROM ... ";
my $dbh = $db->prepare($sqlStatement);
$dbh->execute();
my $row = $dbh->fetchrow_array();
&mysql_disconnect($db)
Kommentiere ich den Codeblock aus, erscheint der kein Eintrag im Errorlogfile des Servers.
Hänge ich in obigen Code an vorletzer Stelle noch ein
rein, erscheinen auch keine Einträge im Logfile.
Deshalb gehe ich davon aus, das obiger Code den Fehler erzeugt.
Ich verstehe jetzt zwei Sachen nicht an der Sache.
1.) in der Subroutine "&mysql_disconnect" findet das hier noch statt
if ($dbh) {$dbh -> finish;}
Damit sollte mein obiges "finish" eigentlich überflüssig sein
2.) ist das Verwirrendste. Im Errorlog erscheint ein anderer Hashwert. Nämlich "0x200b570" statt "0x200b4f8".
Das deutet eigentlich auf einen weiteren $db-Handler hin. Ich finde aber nichts, wo ich diesen erzeuge. Mir ist das völlig unklar.
Habt ihr einen Tipp?
Danke
modedit Editiert von GwenDragon: Titel gekürzt
Last edited: 2012-04-26 17:15:26 +0200 (CEST)