Hi!
zu unique: ja, aber das ist nicht das problem. Gehen wir mal aus die DB ist "richtig" implementiert.
Die Benutzer wählen aus einer Liste aus diese aber nicht Fest in ihrer Größe ist(d.h sie wird jederzeit erweitert von den Benutzern)
Du antwortest mir ausweichend. Geht es im Moment erst einmal oder überhaupt nur um Probleme bei der Abfrage, ohne dass ein Dateineinfügen betrachtet werden muss oder handelt es sich um Probleme bei einem vorbereitenden Abfragen zum Zwecke eines händischen Unique-Checks mit anschließendem Einfügen, ohne dass da ein expliziter Unique Index in der Datenbank existiert, (der aber ein TOCTTOU-Problem verhindern würde)?
Nun tritt folgendes Problem auf:
All data must be fetched before a new statement prepare takes place in ..
Diese Meldung sagt also aus, dass alle Daten zunächst abgefragt werden müssen, bevor ein weiteres Prepare erfolgen darf. Soweit wirst du das hoffentlich verstanden haben. Wie sind deine weiteren Überlegungen, das zu bewerkstelligen?
Es gibt zwei Wege, das zu erreichen. Der eine ist, man holt per Schleife und Fetch alle Daten ab und lagert sie irgendwo zwischen (ein Array vielleicht), macht dann die zweite Abfrage und lagert entweder auch die Daten irgendwo zwischen und verarbeitet sie dann aus diesen Zwischenlagern. Der zweite Weg ist das Verwenden von mysqli_stmt::store_result() (das wird zumindest auf der Handbuchseite zu mysqli_stmt::fetch() erwähnt, wenn auch nicht besonders ausführlich), denn diese Methode fragt im Hintergrund das Ergebnis ab und lagert es selbst zwischen, um es beim Fetch aus diesem Zwischenspeicher holen zu können und damit das DBMS seinen eigenen Ergebnispuffer für die nächste Abfrage verwenden kann.
Lo!