Rainer: Daten werden doppelt in mysql Datenbank geschrieben

Ich werd noch verückt.

Über include, wird ein script ausgeführt das in die Datenbank schreiben soll. Doch es wird jedesmal zweimal in die Datenbank geschrieben.

Mir kam schon der Gedanke das das Script irgendwie zweimal aufgrufen wird, da nn habe ich einefach eine Echo Ausgabe für den Monitor hingemacht, doch diese wird nur einmal angezeigt. Überall sonst funktioniert es einbandfrei.

Weis jemand an was das liegen könnte, ich bin schon total verzewifelt und habe mir die Nacht um die Ohren gehaut.

echo'EINMAL';

$SQLString = "INSERT INTO test (feld) VALUES ('test')";
$Ergebnis = mysql_query($SQLString);

  1. Hast du einen Trigger auf der Tabelle?
    Wird das Statement woanders nochmal aufgerufen? Ergänze das mal um
    $SQLString = "INSERT INTO test (feld) VALUES ('test')";
    $Ergebnis = mysql_query($SQLString);
    $SQLString = ""; <-- das hier
    und schau obs immer noch der Fall ist.
    Bau einen sich ändernden Wert (z.B. Zufallszahl) in das SQL ein, die sich bei jedem Zusammenstellen des SQL ändert, ist der dann jeweils zweimal drin?
    Ansonsten kann wahrscheinlich keiner was sagen ohne die Scriptstruktur zu kennen.

  2. Hello,

    Über include, wird ein script ausgeführt das in die Datenbank schreiben soll. Doch es wird jedesmal zweimal in die Datenbank geschrieben.

    Was tut denn das Script, wenn Du es isoliert testest?
    Wo wird das Script eingebunden?
    Wird ggf. die eigentliche Ressource schon zweimal aufgerufen, z.B. durch JavaScript, AJAX oder ähnliche Techniken?

    Wie sieht der Request aus?

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  3. Hi!

    Mir kam schon der Gedanke das das Script irgendwie zweimal aufgrufen wird, da nn habe ich einefach eine Echo Ausgabe für den Monitor hingemacht, doch diese wird nur einmal angezeigt.

    Du hast auch in die Quelltextansicht geschaut? Nicht das die eine Ausgabe vom Browser nur nicht angezeigt wird.

    Die Vermutung, dass etwas zwei Mal aufgerufen wird, lässt sich nicht in jedem Fall mit einer Kontrollausgabe bestätigen. Browser stellen auch Requests, deren Response sie nicht unmittelbar anzeigen - beispielsweise einzubindende Script-, Style- und andere Ressourcen. Um so etwas zu erkenenn, brauchst du entweder eine Log-Möglichkeit, die unabhängig vom Browserstatus mitschreibt. Das könnte eine Datei auf dem Server sein, wobei du Dateisperren beachten solltest, wenn du dir nicht eine Verfälschung des Ergebnisses durch ein Nebenläufigkeitsproblem einhandeln willst. Sehr nützlich ist auch die livehttpheaders-Extension für den Firefox und ähnliche Tools zum Anzeigen der HTTP-Header, wobei für diesen Fall nicht die Header interessieren, sondern die Requests an sich. Damit kannst du alle Requests sehen, nicht nur die Ausgaben von einem. Allerdings kann es sein, dass dein Fehler nur mit einen bestimmten Browser auftritt. Es könnte nämlich sein, dass du eine Ressource nicht ordnungsgemäß eingebunden hast, was einige Browser veranlasst, dies zu ignorieren, anderen hingegen fordern sie an und treffen damit dein (Index-)Script. Solchen Fehlern kann man durch Validierung auf die Spur kommen.

    Wenn das alles nicht hilft, oder du zwar die doppelten Ausrufe feststellst, jedoch ihre Ursache nicht findest, hat es sich bewehrt, entweder von klein auf erst einmal nur die nötigste Funktionalität aufzubauen und dann schrittweise den Rest hinzuzufügen, bis der Fehler da ist, oder aus der anderen Richtung kommend, immer wieder Teile zu entfernen, bis der Fehler weg ist. Dann weißt du, dass der Fehler irgendwo dort ist oder im Zusammenhang mit dem eben hinzugefügten oder entfernten Code auftritt.

    Lo!