mysql: Commands out of sync

Letztens kam ich an der php mysqli Fehlermeldung vorbei:

Commands out of sync; you can't run this command now.

Konkret war es bei mir ein select-Statement ausführen nach dem ausführen einer Prozedur mit Rückgabewert. Nach vielem hin und her und noch mehr googeln war keine vernünftige Lösung für das Problem zu finden. Alle Lösungen bezogen sich nur auf mysql_free_result(), was bei meiner Problemstellung keinen Unterschied machte. Nur ein mysqli_next_result($conn) hat die Meldung verschwinden lassen. Angeblich liefern Prozeduren zusätzlich zu dem letzten select-Statement noch ein weiteres Resultset zurück, das weiterführende Informationen zu der Ausführung enthält. Dieses muss man warscheinlich überspringen, damit das nächste Statement auf der gleichen Verbindung ausgeführt werden kann.

Hat nicht geholfen:

Wenn Commands out of sync; you can't run this command now in Ihrem Clientcode gemeldet wird, rufen Sie Clientfunktionen in der verkehrten Reihenfolge auf.

Dies kann zum Beispiel geschehen, wenn Sie mysql_use_result() benutzen und versuchen, eine neue Anfrage auszuführen, ehe Sie mysql_free_result() aufgerufen haben. Oder wenn Sie versuchen, zwei Anfragen, die Daten liefern, auszuführen, ohne dazwischen mysql_use_result() oder mysql_store_result() aufzurufen.

Quelle: mysql Dokumentation

Das einzige was bei mir geholfen hat, war

mysqli_next_result($conn);

vor dem ausführen des nächsten Statements auszuführen.

Schreib einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *