Ja, wir können natürlich auch noch weiter Vermutungen darüber anstellen, was alles sein könnte und sein sollte.
Wenn ich dich richtig verstehe, ist dein Problem doch offenbar, dass von der falschen ID (immer ID 2) die Produktmenge verkleinert wird.
Demnach ist die logische Schlussfolgerung, dass im Query eine falsche ID (immer ID 2) angegeben wird, denn SQL macht nicht einfach mal so einen Fehler.
Demnach ist die logische Schlussfolgerung, herauszufinden, ab welchem Zeitpunkt die ID nicht mehr richtig übermittelt wird.
Und sowas macht man nicht über Vermutung, müsste und sollte, sondern über Debugging, dafür gibt es Dinge wie var_dump und Konsorten.
Wenn du doch an Wunderheiler glaubst und guter Hoffnung bist, das Problem nur mit wagen Vermutungen und unbestätigten Thesen herauszufinden, wünsche ich dir viel Glück dabei
Eingrenzen können wir das ganze bisher vom Zeitpunkt NACH dem Query der Produktabfrage bis zum Query VOR der Produktverkleinerung.
Zwischen den beiden Punkten muss sich demnach die Variable, wenn auch ungewollt, irgendwo verändern. Da wird nur müßiges Suchen durch Debugging helfen.