Hi!
sind also zwei "offene" Statements nicht möglich?
Doch, schon. Nuhr: ausführen darfst Du nur eins.
alles klar... gibt es eine andere möglichkeit zwei statements zur selben zeit auszuführen?
Also, entweder ist Hotte Hellseher oder ... (Normalerweise ist Perl sein Hobby und von PHP hat er wenig Ahnung.)
Du gibt weder an, mit welchem DBMS du arbeitest, noch ob der Fehler im DBMS oder bei der Abfrage durch PHP auftritt. PHP ist ist zwar die Kategorie, in der du das Problem einsortiert hast, aber dass du PDO verwendest, muss man anhald des eingestreuten Methodennamens closeCursor() raten. Und nun fragst du nach einer "anderen Möglichkeit" ohne gesagt zu haben, was denn konkret deine derzeitige ist.
Auf der Handbuchseite zu PDOStatement->closeCursor steht übrigens, dass diese Methode bei einigen DBMS erforderlich ist, wenn man die Ergebnismenge nicht "leergefetcht" hat. Das heißt, dass sie bei anderen DBMS nicht erforderlich ist. Mit MySQL habe ich eben problemlos mit zwei Prepared Statements zur selben Zeit im exekutierten und noch nicht leergefetchtem Zustand arbeiten können.
Üblicherweise ist die MySQL-Client-API auf Buffered Query eingestellt. Das heißt, dass bei einem Query- oder Execute-Aufruf das Abfrageergebnis komplett im Hintergrund in einen Zwischenspeicher der Client-API abgefragt wird, so dass im Server selbst keine unleergefetchten Ergebnismengen liegen. Dieses Verhalten muss man explizit dektivieren, wenn man das so nicht haben will, dafür aber dein geschildertes Problem. Siehe Attribut PDO::MYSQL_ATTR_USE_BUFFERED_QUERY.
Lo!