Ich verwende den aktuellsten Codezeichner und versuche, gespeicherte Prozeduren von meinem Modell aufzurufen. Auch ich benutze mysqli als Datenbanktreiber. Jetzt habe ich einen Fehler, wenn ich zwei gespeicherte Prozeduren anrufe. Folgendes ist der Fehler:
Fehlernummer: 2014
Befehle, die nicht synchron sind; Sie können diesen Befehl jetzt nicht mehr ausführen
rufen Sie uspTest () auf;
Dateiname: E: \ wamp \ www \ reonomy-dev \ system \ Datenbank \ DB_driver.php
Zeilennummer: 330
Beachten Sie, dass es funktioniert, wenn ich eine einzelne gespeicherte Prozedur aufruft. Hier ist der Code für das Modell.
%Vor%Hier ist der Code vom Controller
%Vor%Gibt es eine Lösung, ohne den Kern des Codeigniters zu hacken?
Dies scheint ein Fehler in CodeIgniter zu sein. Wie kommt es, dass es immer noch da ist, ist jenseits von mir. Es gibt jedoch ein paar Möglichkeiten, um es zu überwinden.
Überprüfen Sie hier: Ссылка Im Grunde modifizieren Sie mysqli_result.php so, dass next_result () -Funktion eingeschlossen ist und stellen Sie sicher, dass sie nach jedem gespeicherten proc aufgerufen wird. Anruf. Beachten Sie, dass Sie annehmen, dass Sie mysqli als Ihren DB-Treiber verwenden ... aber Sie können wahrscheinlich etwas Ähnliches mit jedem anderen tun. Sie können Ihren Treiber in /application/config/database.php ändern. In der Zeile steht
$ db ['Standard'] ['dbdriver'] = 'mysql';
standardmäßig. Ändere es zu:
$ db ['Standard'] ['dbdriver'] = 'mysqli';
Sie könnten auch einfach eine DB-Verbindung zwischen den Anrufen schließen / wieder öffnen, aber ich würde definitiv davon abraten.
Ich folge dem Blog von Mr. Tim Brownlaw:
Ссылка
Ändern Sie zunächst application / config / config.php, Zeile 55.
%Vor%Fügen Sie dann Folgendes in mysqli_result.php hinzu, das diesen Befehl aus irgendeinem seltsamen Grund (unter /system/database/drivers/mysqli/mysqli_result.php) nicht enthält.
%Vor% Fügen Sie dann in Ihrem Modell $result->next_result()
hinzu.
Unten ist mein Beispiel.
%Vor%Mit dem gleichen Problem habe ich einen anderen Ansatz gefunden, der den Kern nicht verändert, sondern stattdessen einen kleinen Helfer verwendet.
Bearbeiten: Das unten verlinkte Asset ist nirgendwo zu finden.
Siehe CoreyLoose-Post.
Ich musste jedoch eine kleine Anpassung an seinen Helfer vornehmen. Die Zeile
%Vor%könnte möglicherweise eine Warnung erzeugen, da das $ -Ergebnis manchmal als boolescher Wert übergeben wird. Ich habe nur einen Haken vor diese Zeile gesetzt und jetzt funktioniert es perfekt, ohne an den Kern zu basteln!
Tags und Links mysql stored-procedures codeigniter codeigniter-2