Versuchen Sie Folgendes:
%Vor% Zuerst erhalten Sie die Abfrage-Metadaten und erhalten von dort alle Felder, die Sie abgerufen haben (Sie könnten dies manuell tun, aber dieser Code funktioniert für alle Abfragen, anstatt von Hand zu erstellen). Die Funktion call_user_func_array()
ruft das mysqli_stmt::bind_result()
funktioniert für Sie bei jedem dieser Parameter.
Danach geht es nur noch darum, durch jede Zeile zu laufen und für jede Zeile ein assoziatives Array zu erstellen und dieses einem Array hinzuzufügen, was zu allen Ergebnissen führt.
Seltsamerweise können Sie nicht. Es gibt einfach keine Möglichkeit, ein mysqli_result-Objekt von einer mysqli_stmt-Instanz zu erhalten. Ich habe das immer als einen großen Fehler betrachtet und vermutete, dass dies einer der Hauptgründe dafür ist, dass mysqli nie wirkliche Popularität erreicht hat. Heutzutage ist es von PDO ziemlich abgelöst worden, welches das, was Sie wollen, ohne Anstrengung erledigt.
Bearbeiten: Meine Antwort bedeutet nur, dass Sie dies standardmäßig nicht tun können. Natürlich können Sie es selbst implementieren, wie Chris vorgeschlagen hat. Trotzdem, ich denke du solltest stattdessen PDO benutzen, wenn es überhaupt möglich ist.
Wenn Sie die PDO-Erweiterung nicht verwenden können. Oder Sie haben Probleme beim Erstellen Ihrer Datenbankklasse mit vorbereiteten Anweisungen. Wie verwende ich für das Einfügen-Update, löschen und einfügen:
%Vor%Fetch funktioniert etwas anders
%Vor%Nun zur Datenbankklasse
%Vor%Ich hoffe, das ist hilfreich
Ich bin auf diese Diskussion gestoßen, um eine Lösung zu finden, um Daten aus MySQLi vorbereiteten Anweisungen ohne mysqlnd zu erhalten. Ich habe eine Klasse für den Umgang mit vorbereiteten Anweisungen mit MySQLi auf praktische Weise entwickelt. Werfen Sie einen Blick auf den Code oder verwenden Sie ihn einfach (siehe ein Anwendungsbeispiel am Ende des Codeabschnitts), um vorbereitete Anweisungen schnell zu schreiben und die Ergebnisse zu erhalten.
%Vor%Tags und Links php prepared-statement mysqli associative-array