Jetzt hab ich ihn !!!
In der Methode query war vorher
if ($this->resid) @$this->resid->free_result();
Das war bei mySql gut, nicht aber bei mySqli.
if (is_object($this->resid)) @$this->resid->free_result();
und es läuft !
Anscheint war in $dbi2->resid irgendein Wert (nach der UPDATE query) gespeichert, wodurch der if-zweig betreten wurde. Dieser Wert war aber anscheinend nicht geeignet um das Suchergebnis mit free freizugeben, wodurch irgendwie das letzte verwendete MySqli Suchergebnis freigegeben wurde. Dieses war das vom anderen Objekt. Zumindest ist das meine einzige Erklärung.
Mit is_object läuft es einwandfrei! Bei mySql war die einfach if Abfrage ausreichend, bei mySqli nicht.
Danke, Tom für die Hilfe. Du hast mich auf die richtige Fähre gebracht.
Das war jetzt schon eine harte Nuss.