Hallo Günni,
dein SQL führt eine einzige Schreiboperation durch. Wenn es nachher 3 Datensätze gibt, ist die Ursache nicht in dem Code zu suchen, den Du uns zeigst.
Insofern ist der Hinweis der Glaskugel sehr berechtigt. Diesem Hinweis nachgehen kannst Du aber nur selbst, es sei denn, du postest deinen gesamten Code. HALT, nicht tun.
Besser wäre, wenn Du selbst anfängst, zu debuggen.
- mit XDEBUG den Code schrittweise ausführen (was voraussetzt, dass der Webserver auf deinem eigenen Gerät läuft)
- den Code mit Protokoll-Ausgaben vollstopfen. Entweder mit echo ausgeben, oder - wenn Du einen Logging-Mechanismus verfügbar hast, ins Log schreiben. Solche Protokoll-Ausgaben müssen Dir zumindest verraten, welche Codestelle gerade durchlaufen wurde. Je nach den Umständen gibst Du auch noch kritische Variableninhalte aus.
Mit echo zerreißt es Dir natürlich unweigerlich das HTML, weil diese echos mittendrin landen. Ich löse so etwas gerne mit einem globalen Array, in dem ich die Debug-Ausgaben sammle, und das ich am Ende in einem von mir kontrollierten Bereich des HTML ausgeben. Nachteil: sollte das Script mit einem fatal error abbrechen, geht die Debug-Ausgabe verloren. Das kann man, wenn es nötig wird, mit Funktionen, die über set_error_handler und set_exception_handler registriert werden, lösen.
Protokolliere also deinen Ablauf. Danach weißt Du mehr.
Rolf
sumpsi - posui - obstruxi