Aufruf der gespeicherten Prozedur im Code-Signierer

8

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?

    
Tausif Khan 14.10.2011, 11:56
quelle

4 Antworten

5

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.

    
kaqqao 16.10.2011, 18:46
quelle
17

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%     
Norman 08.02.2013 09:01
quelle
7

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!

    
jonas 29.12.2011 13:21
quelle
2

Ändere dbdriver zu "mysqli" Setzen Sie diese Funktion auf Ihr Modell und verwenden Sie sie, um die gespeicherte Prozedur aufzurufen

%Vor%     
Fredy 23.09.2014 02:09
quelle