Befehle nicht synchron; Sie können diesen Befehl jetzt nicht ausführen

94

Ich versuche, meinen PHP-Code auszuführen, der zwei MySQL-Abfragen über mysqli aufruft, und erhalte die Fehlermeldung "Befehle nicht synchron; Sie können diesen Befehl jetzt nicht ausführen".

Hier ist der Code, den ich benutze

<?php
$con = mysqli_connect("localhost", "user", "password", "db");
if (!$con) {
    echo "Can't connect to MySQL Server. Errorcode: %s\n". Mysqli_connect_error();
    exit;
}
$con->query("SET NAMES 'utf8'");
$brand ="o";
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE % ? %";
if ($numRecords = $con->prepare($countQuery)) {
    $numRecords->bind_param("s", $brand);
    $numRecords->execute();
    $data = $con->query($countQuery) or die(print_r($con->error));
    $rowcount = $data->num_rows;
    $rows = getRowsByArticleSearch("test", "Auctions", " ");
    $last = ceil($rowcount/$page_rows);
}  else {

print_r($con->error);
}
foreach ($rows as $row) {
    $pk = $row['ARTICLE_NO'];
    echo '<tr>' . "\n";
    echo '<td><a href="#" onclick="updateByPk(\'Layer2\', \'' . $pk . '\')">'.$row['USERNAME'].'</a></td>' . "\n";
    echo '<td><a href="#" onclick="updateByPk(\'Layer2\', \'' . $pk . '\')">'.$row['shortDate'].'</a></td>' . "\n";
    echo '<td><a href="#" onclick="deleterec(\'Layer2\', \'' . $pk . '\')">DELETE RECORD</a></td>' . "\n";
    echo '</tr>' . "\n";
}
function getRowsByArticleSearch($searchString, $table, $max) {
    $con = mysqli_connect("localhost", "user", "password", "db");
    $recordsQuery = "SELECT ARTICLE_NO, USERNAME, ACCESSSTARTS, ARTICLE_NAME, date_format(str_to_date(ACCESSSTARTS, '%d/%m/%Y %k:%i:%s'), '%d %m %Y' ) AS shortDate FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE '%?%' ORDER BY str_to_date(ACCESSSTARTS, '%d/%m/%Y %k:%i:%s')" . $max;
    if ($getRecords = $con->prepare($recordsQuery)) {
        $getRecords->bind_param("s", $searchString);
        $getRecords->execute();
        $getRecords->bind_result($ARTICLE_NO, $USERNAME, $ACCESSSTARTS, $ARTICLE_NAME, $shortDate);
        while ($getRecords->fetch()) {
            $result = $con->query($recordsQuery);
            $rows = array();
            while($row = $result->fetch_assoc()) {
                $rows[] = $row;
            }
            return $rows;
        }
    }
}

Ich habe versucht, dies nachzulesen, bin mir aber nicht sicher, was ich tun soll. Ich habe über das Speicherergebnis und das kostenlose Ergebnis gelesen, aber diese haben bei der Verwendung keinen Unterschied gemacht. Ich bin mir nicht sicher, an welchem ​​Punkt dieser Fehler verursacht wird, und möchte wissen, warum er verursacht wird und wie er behoben werden kann.

Nach meinen Debug-Anweisungen wird die erste if-Schleife für countQuery aufgrund eines Fehlers in meiner SQL-Syntax in der Nähe von nicht einmal eingegeben '% ? %'. Wenn ich jedoch nur auswähle, *anstatt zu versuchen, basierend auf einer LIKE-Klausel zu begrenzen, wird der Befehl immer noch nicht synchronisiert.

Joshxtothe4
quelle

Antworten:

115

Sie können nicht zwei Abfragen gleichzeitig durchführen, da mysqli standardmäßig ungepufferte Abfragen verwendet (für vorbereitete Anweisungen ist es das Gegenteil für Vanille mysql_query). Sie können entweder das erste in ein Array holen und dieses durchlaufen oder mysqli anweisen, die Abfragen zu puffern (using $stmt->store_result()).

Siehe hier für Details.

HoLyVieR
quelle
3
Ich stimme zu, Mysqli ist ein bisschen hirngeschädigt. Es tut das Richtige tun mit den PDO MySQL - Treiber though.
17
Sie können zwei Abfragen gleichzeitig haben - Sie müssen nur ausführen. $stmt->store_result();Ich denke, Ihre Antwort sollte dies klarer machen.
Schatten
3
Ich brauche Ewigkeiten, um diese Informationen herauszufinden - nein, wo sie leicht angezeigt werden können. Vielen Dank. Ich trenne meine Abfragen nur mit $select_stmt->close();, um sie aufzuteilen (nicht gleichzeitig, sondern prozedural
n34_panda
@flussence, Sie haben angegeben, dass "mysqli standardmäßig ungepufferte Abfragen verwendet". Wie können wir es also anders einstellen?
Pacerier
1
Ich weiß, dass es seltsam erscheint, aber ich hatte diesen Fehler beim Ausführen einer Abfrage mit mysqli_query, die einen Fremdschlüssel verletzt. Wenn dies also jemandem passiert, überprüfen Sie noch einmal, ob Ihre INSERT-Abfrage keinen Fremdschlüssel verletzt
lucaferrario
33

Ich habe dieses Problem in meiner C-Anwendung gelöst - so habe ich es gemacht:

  1. Zitat aus MySQL-Foren:

    Dieser Fehler tritt auf, wenn Sie Ihre Abfrage mit einem Semikolon-Trennzeichen in der Anwendung beenden . Während es erforderlich ist, eine Abfrage mit einem Semikolon-Trennzeichen zu beenden, wenn Sie sie über die Befehlszeile oder im Abfragebrowser ausführen, entfernen Sie das Trennzeichen aus der Abfrage in Ihrer Anwendung.

  2. Nach dem Ausführen meiner Abfrage und dem Behandeln der Ergebnisse [C API: mysql_store_result() bearbeitet habe ], iteriere ich über alle weiteren potenziell ausstehenden Ergebnisse, die über die Ausführung mehrerer SQL-Anweisungen auftreten, z. B. zwei oder mehr select-Anweisungen (Rücken an Rücken, ohne die Ergebnisse zu behandeln).

    Tatsache ist, dass meine Prozeduren nicht mehrere Ergebnisse zurückgeben, aber die Datenbank weiß das erst, wenn ich Folgendes ausführe: [C API: mysql_next_result()]. Ich mache das in einer Schleife (für ein gutes Maß), bis es ungleich Null zurückgibt. In diesem Fall weiß der aktuelle Verbindungshandler, dass es in Ordnung ist, eine weitere Abfrage auszuführen (ich speichere meine Handler zwischen, um den Verbindungsaufwand zu minimieren).

    Dies ist die Schleife, die ich benutze:

    for(; mysql_next_result(mysql_handler) == 0;) 
      /* do nothing */;

Ich kenne PHP nicht, aber ich bin mir sicher, dass es etwas Ähnliches hat.

tracy.brown
quelle
11
Das war es für mich. In PHP habe ich gerade hinzugefügt: while (mysqli_next_result ($ con));
Josh
Vielen Dank für die Antwort, die mein Problem gelöst hat. Ich habe das Trennzeichen entfernt und es funktioniert. Ich habe meine Ergebnisse nicht freigegeben (abgerufen) oder gespeichert, sondern den Cursor geschlossen und neu erstellt, sobald ich eine Abfrageanweisung abgeschlossen habe.
Chen Xie
@ Josh, wie geht das in der Legacy- mysqlErweiterung?
Pacerier
1
Durch Entfernen des Semikolons am Ende der Abfrage wurde das Problem "Befehle nicht synchron; Sie können diesen Befehl jetzt nicht ausführen" bei Verwendung von Python MySQLdb behoben.
Genom
17

Ich hatte heute das gleiche Problem, aber nur bei der Arbeit mit einer gespeicherten Prozedur. Dadurch verhält sich die Abfrage wie eine Mehrfachabfrage. Sie müssen also andere verfügbare Ergebnisse "verbrauchen", bevor Sie eine weitere Abfrage durchführen.

while($this->mysql->more_results()){
    $this->mysql->next_result();
    $this->mysql->use_result();
}
Stalin Beltran
quelle
Dies ist ein wichtiger Punkt: Gespeicherte Prozeduren geben eine Ergebnismenge zurück, die über jede Ergebnismenge hinausgeht, die der Code im SP möglicherweise generiert. Sie müssen damit umgehen oder diesen Fehler erhalten: stackoverflow.com/a/2315229/4495850
Richard
11

Ich rufe diese Funktion jedes Mal auf, bevor ich $ mysqli-> query verwende. Funktioniert auch mit gespeicherten Prozeduren.

function clearStoredResults(){
    global $mysqli;

    do {
         if ($res = $mysqli->store_result()) {
           $res->free();
         }
        } while ($mysqli->more_results() && $mysqli->next_result());        

}
Jürgen
quelle
4

Sobald Sie verwendet haben

stmt->execute();

Sie KÖNNEN es schließen eine weitere Abfrage zu verwenden.

stmt->close();

Dieses Problem hat mich stundenlang gejagt. Hoffentlich wird es deine reparieren.

Carl James
quelle
1
Das Schließen der Anweisung ist nicht erforderlich. Wie @stalinbeltran oben antwortete, müssen wir das Ergebnis einer Anweisung "konsumieren", bevor wir eine andere vorbereiten. Also, $stmt1->execute(); $stmt2=$conn->prepare(...)würde diesen Fehler geben, $stmt1->execute(); $result1=$stmt1->get_result(); $stmt2=$conn->prepare(...)würde aber gut funktionieren.
Jay Dadhania
2

Ich benutze CodeIgniter. Ein Server OK ... dieser wahrscheinlich älter ... Wie auch immer

$this->db->reconnect();

Behoben.

normannisch
quelle
7
Wie wird das Problem behoben?
Jeremy J Starcher
4
@Norman, Dies "behebt" das Problem nicht. Es vermeidet es lediglich , indem es die gesamte Verbindung wegwirft und die Verbindung wieder herstellt. Dies ist unter Leistungsgesichtspunkten überhaupt nicht sinnvoll.
Pacerier
1

Das Problem ist die MySQL-Client-C-Bibliothek, auf der die meisten MySQL-APIs basieren. Das Problem ist, dass die C-Bibliothek die gleichzeitige Ausführung von Abfragen nicht unterstützt, sodass alle darauf aufbauenden APIs dies auch nicht tun. Auch wenn Sie ungepufferte Abfragen verwenden. Dies ist ein Grund, warum die asynchrone MySQL-API geschrieben wurde. Sie kommuniziert direkt mit dem MySQL - Server unter Verwendung von TCP und das Draht-Protokoll tut gleichzeitige Abfragen unterstützen.

Ihre Lösung besteht darin, entweder den Algorithmus so zu ändern, dass nicht beide gleichzeitig ausgeführt werden müssen, oder sie so zu ändern, dass gepufferte Abfragen verwendet werden. Dies ist wahrscheinlich einer der ursprünglichen Gründe für ihre Existenz in der C-Bibliothek (der andere Grund ist dies) eine Art Cursor bereitstellen).

staticsan
quelle
1
Ich muss nicht beide gleichzeitig ausführen, ich bin froh, dass countQuery vor meiner zweiten Abfrage vollständig abgeschlossen ist, aber ich bin mir nicht sicher, wie ich verhindern kann, dass countQuery im Fortschritt ist
Sie rufen keine Daten aus countQuery ab, deshalb sind sie noch in Bearbeitung. Rufen Sie entweder alle Zeilen ab oder ändern Sie sie in SELECT COUNT (ARTICLE_NO) und rufen Sie diese Zeile ab. Dann wird Ihre zweite Abfrage ausgeführt.
Staticsan
Wenn Sie "die asynchrone MySQL-API" sagen, auf welche API beziehen Sie sich? Ich verstehe auch nicht Ihre Schlussfolgerung. Dieses "Problem" kann behoben werden, ohne dass die API asynchron sein muss.
Pacerier
1
Um ehrlich zu sein @Pacerier Ich bin mir auch nicht mehr ganz sicher, was ich meinte! In sechs Jahren ist in der MySQL-Konnektivität viel passiert. Was auch immer ich meinte, es wurde wahrscheinlich umbenannt und / oder in einen anderen neuen Treiber integriert.
Statik am
1

Um dieses Problem zu lösen, müssen Sie die Ergebnisdaten speichern, bevor Sie sie verwenden können

$numRecords->execute();

$numRecords->store_result();

das ist alles

Nader Ben Mabrouk
quelle
1

Eine andere Ursache: store_result () kann nicht zweimal aufgerufen werden.

Im folgenden Code wird beispielsweise Fehler 5 gedruckt.

<?php

$db = new mysqli("localhost", "something", "something", "something");

$stmt = $db->stmt_init();
if ($stmt->error) printf("Error 1 : %s\n", $stmt->error);

$stmt->prepare("select 1");
if ($stmt->error) printf("Error 2 : %s\n", $stmt->error);

$stmt->execute();
if ($stmt->error) printf("Error 3 : %s\n", $stmt->error);

$stmt->store_result();
if ($stmt->error) printf("Error 4 : %s\n", $stmt->error);

$stmt->store_result();
if ($stmt->error) printf("Error 5 : %s\n", $stmt->error);

(Dies ist möglicherweise nicht relevant für den ursprünglichen Beispielcode, kann jedoch für Personen relevant sein, die nach Antworten auf diesen Fehler suchen.)

David G.
quelle
1

Hier ist was mein Problem war !!!

Die Parameterbindung war "dynamisch", daher hatte ich eine Variable, die die Parameter der Daten festlegt , um bind_param zu verwenden . Diese Variable war also falsch, aber anstatt einen Fehler wie "falsche Parameterdaten" auszulösen, heißt es "nicht synchron bla bla bla", also war ich verwirrt ...

Ari Waisberg
quelle
0

Ich denke, das Problem ist, dass Sie eine neue Verbindung in der Funktion herstellen und diese am Ende nicht schließen. Warum versuchen Sie nicht, die vorhandene Verbindung weiterzugeben und wiederzuverwenden?

Eine andere Möglichkeit besteht darin, dass Sie mitten in einer while-Schleife zurückkehren. Sie vervollständigen diesen äußeren Abruf nie.

Paul Tomblin
quelle
1
Wenn ich $ con global mache (was eine schlechte Praxis ist, aber so funktionieren sollte, wie Sie es beschreiben), habe ich immer noch den gleichen Fehler.
1
Ich glaube nicht, dass eine globale Verbindung eine schlechte Praxis ist
Mathieu J.
0

Überprüfen Sie, ob Sie alle Parameter richtig eingeben. Es wird der gleiche Fehler ausgegeben, wenn die Anzahl der definierten und dann an die Funktion übergebenen Parameter unterschiedlich ist.

Mixtelf
quelle
0

Dies hat nichts mit der ursprünglichen Frage zu tun, aber ich hatte die gleiche Fehlermeldung und dieser Thread ist der erste Treffer in Google. Ich habe eine Weile gebraucht, um herauszufinden, was das Problem war, sodass er für andere von Nutzen sein kann:

Ich verwende NICHT mysqli, sondern immer noch mysql_connect. Ich hatte einige einfache Abfragen, aber EINE Abfrage führte dazu, dass alle anderen Abfragen innerhalb derselben Verbindung fehlschlugen.

Ich benutze MySQL 5.7 und PHP 5.6 Ich hatte eine Tabelle mit dem Datentyp "JSON". offensichtlich hat meine PHP-Version den Rückgabewert von MySQL nicht erkannt (PHP wusste einfach nicht, was mit dem JSON-Format zu tun ist, weil das eingebaute MySQL-Modul zu alt war (zumindest denke ich))

Im Moment habe ich den JSON-Feldtyp in Text geändert (da ich momentan keine native MySQL-JSON-Funktionalität benötige) und alles funktioniert einwandfrei

mech
quelle
0

Wenn Sie zum Abrufen von Daten entweder die gepufferte oder die ungepufferte Ergebnismenge verwenden, müssen Sie zuerst einfach die abgerufenen Daten aus dem Speicher löschen, nachdem Sie alle Daten abgerufen haben . Da Sie keine andere MYSQL-Prozedur auf derselben Verbindung ausführen können, bis Sie den abgerufenen Speicher gelöscht haben. Fügen Sie diese Funktion am rechten Ende Ihres Skripts hinzu, damit das Problem behoben wird

$numRecords->close(); or $numRecords->free(); // This clears the referencing memory, and will be ready for the next MYSQL fetch

Referenz aus der PHP-Dokumentation

Kaz
quelle
1
Wenn Sie einige Datensätze nicht benötigen, sollten Sie sie gar nicht erst ausgewählt haben. Anstatt sie nur freizugeben, wählen Sie sie einfach überhaupt nicht aus. Wenn dies nicht der Fall ist und Sie alle ausgewählten Datensätze abgerufen haben, tritt überhaupt kein solcher Fehler auf, und Sie müssen nicht close () oder free () aufrufen. In Bezug auf die gespeicherten Prozeduren gibt es eine weniger barbarische Methode, die in den obigen Antworten beschrieben wird
Your Common Sense
0

Ich bin mit Doctrine DBAL QueryBuilder auf diesen Fehler gestoßen.

Ich habe mit QueryBuilder eine Abfrage erstellt, die Spaltenunterauswahlen verwendet, die ebenfalls mit QueryBuilder erstellt wurden. Die Unterauswahlen wurden nur über erstellt $queryBuilder->getSQL()und nicht ausgeführt. Der Fehler trat beim Erstellen der zweiten Unterauswahl auf. Durch vorläufiges Ausführen jeder Unterauswahl mit $queryBuilder->execute()vor der Verwendung $queryBuilder->getSQL()funktionierte alles. Es ist, als ob die Verbindung $queryBuilder->connectiontrotz der neuen QueryBuilder-Instanz in jeder Unterauswahl in einem ungültigen Zustand bleibt, um eine neue SQL zu erstellen, bevor die aktuell vorbereitete SQL ausgeführt wird.

Meine Lösung bestand darin, die Unterauswahlen ohne QueryBuilder zu schreiben.

Fabian Picone
quelle
0

Ich verwende ODBC und dieses Update funktioniert für mich: ODBC -> Registerkarte System-DSN -> Doppelklick, um meine Datenquelle zu konfigurieren -> Details -> Registerkarte Cursor -> Deaktivieren [Ergebnisse von Cursoren nur für die Weiterleitung nicht zwischenspeichern] - > Klicken Sie auf OK

Teemo
quelle
0

Ich habe diesen Fehler oft festgestellt und es ist immer dann, wenn ich eine gespeicherte Prozedur ausführe, die ich in phpmyadmin oder SQL Workbench debuggt habe (ich arbeite in PHP und verbinde mich mit mysqli).

Der Fehler resultiert aus der Tatsache, dass beim Debuggen an strategischen Punkten im Code SELECT-Anweisungen eingefügt werden, um den Status von Variablen usw. anzuzeigen. Das Ausführen einer gespeicherten Prozedur, die in diesen Clientumgebungen mehrere Ergebnismengen erzeugt, ist in Ordnung, führt jedoch zu " Befehle nicht synchron "Fehler beim Aufruf von PHP. Die Lösung besteht immer darin, die Debugging-Auswahl auskommentieren oder entfernen, damit die Prozedur nur eine Ergebnismenge hat.

Nikkorian
quelle
-1

Mein Problem war, dass ich zuerst die Prepare-Anweisung und dann die MySQL-Abfrage auf derselben Seite verwendete und den Fehler "Befehle nicht synchron; Sie können diesen Befehl jetzt nicht ausführen" erhielt. Der Fehler trat erst dann auf, als ich den Code mit der Prepare-Anweisung verwendete.

Ich habe die Frage geschlossen. und es hat funktioniert.

mysqli_stmt_close ($ stmt);

Mein Code

get_category.php (hier mit prepare-Anweisung)

    <?php


    global $connection;
    $cat_to_delete =    mysqli_real_escape_string($connection, $_GET['get'] );

    $sql = "SELECT category_name FROM categories WHERE category_id = ? ;";


    $stmt = mysqli_stmt_init($connection);

    if (!mysqli_stmt_prepare($stmt, $sql))
        $_SESSION['error'] = "Error at preaparing for deleting query. mysqli_stmt_error($stmt) ." & redirect('../error.php');

    mysqli_stmt_bind_param($stmt, 's', $cat_to_delete);

    if (!mysqli_stmt_execute($stmt))
        $_SESSION['error'] = "ERror at executing delete category ".mysqli_stmt_error($stmt) &
            redirect('../error.php');


    mysqli_stmt_bind_result($stmt, $cat_name);

    if (!mysqli_stmt_fetch($stmt)) {
        mysqli_stmt_error($stmt);
    }



    mysqli_stmt_free_result($stmt);
    mysqli_stmt_close($stmt);

admin_get_category_body.php (hier mysqli)

        <?php

        if (isset($_GET['get']) && !empty($_GET['get']) )
        {
            include 'intodb/edit_category.php';
        }


        if (check_method('get') && isset($_GET['delete']) )
        {
            require 'intodb/delete_category.php';
        }


        if (check_method('get') && isset($_GET['get']) )
        {
            require 'intodb/get_category.php';
        }


        ?>

        <!--            start: cat body          -->

        <div     class="columns is-mobile is-centered is-vcentered">
            <div class="column is-half">
                <div   class="section has-background-white-ter box ">


                    <div class="has-text-centered column    " >
                        <h4 class="title is-4">Ctegories</h4>
                    </div>

                    <div class="column " >


                        <?php if (check_method('get') && isset($_GET['get'])) {?>
                        <form action="" method="post">
                            <?php } else {?>
                            <form action="intodb/add_category.php" method="post">
                                <?php } ?>

                                <label class="label" for="admin_add_category_bar">Add Category</label>
                                <div class="field is-grouped">

                                    <p class="control is-expanded">

                                        <?php if (check_method('get') && isset($_GET['get'])) {?>

                                            <input id="admin_add_category_bar" name="admin_add_category_bar_edit" class="input" type="text" placeholder="Add Your Category Here" value="<?php echo $cat_name; ?>">

                                            <?php


                                            ?>
                                        <?php } else {?>
                                            <input id="admin_add_category_bar" name="admin_add_category_bar" class="input" type="text" placeholder="Add Your Category Here">

                                        <?php } ?>
                                    </p>
                                    <p class="control">
                                        <input type="submit" name="admin_add_category_submit" class="button is-info my_fucking_hover_right_arrow" value="Add Category">
                                    </p>
                                </div>
                            </form>


                            <div class="">

                                <!--            start: body for all posts inside admin          -->


                                <table class="table is-bordered">
                                    <thead>
                                    <tr>
                                        <th><p>Category Name</p></th>
                                        <th><p>Edit</p></th>
                                        <th><p>Delete</p></th>
                                    </tr>
                                    </thead>

                                    <?php

                                    global $connection;
                                    $sql = "SELECT * FROM categories ;";

                                    $result = mysqli_query($connection, $sql);
                                    if (!$result) {
                                        echo mysqli_error($connection);
                                    }
                                    while($row = mysqli_fetch_assoc($result))
                                    {
                                        ?>
                                        <tbody>
                                        <tr>
                                            <td><p><?php echo $row['category_name']?></p></td>
                                            <td>
                                                <a href="admin_category.php?get=<?php echo $row['category_id']; ?>" class="button is-info my_fucking_hover_right_arrow" >Edit</a>

                                            </td>

                                            <td>
                                                <a href="admin_category.php?delete=<?php echo $row['category_id']; ?>" class="button is-danger my_fucking_hover_right_arrow" >Delete</a>

                                            </td>
                                        </tr>


                                        </tbody>
                                    <?php }?>
                                </table>

                                <!--           end: body for all posts inside admin             -->




                            </div>

                    </div>
                </div>


            </div>

        </div>
        </div>

Etwas, das mir gerade in den Sinn gekommen ist, füge ich auch wieder eine Verbindungsvariable über eine globale $ -Verbindung hinzu. Ich denke also, dass nach dem Ende der prepare-Anweisung mit mysqli_stmt_close ($ stmt) im Grunde genommen ein ganz neuer Satz von Abfragesystemen gestartet wird. und auch ich füge diese Dateien und andere Sachen über include hinzu

Mahad Ali
quelle
get_category.php (hier mit Erklärung vorbereiten) pastebin.com/BiWysdYz admin_get_category_body.php (hier mysqli) pastebin.com/Pwm30icm Hinweis: Es können nicht alle nach dem Code aufgrund Einschränkung
Mahad Ali
Etwas, das mir gerade in den Sinn gekommen ist, füge ich auch wieder eine Verbindungsvariable über eine globale $ -Verbindung hinzu. Ich denke also, dass nach dem Ende der prepare-Anweisung mit mysqli_stmt_close ($ stmt) im Grunde genommen ein ganz neuer Satz von Abfragesystemen gestartet wird. und auch ich füge diese Dateien und andere Sachen über include hinzu.
Mahad Ali
-1

Dies ist eine alte Frage, aber keine der geposteten Antworten funktionierte in meinem Fall. Ich stellte fest, dass in meinem Fall in einer gespeicherten Prozedur eine Tabelle ausgewählt und aktualisiert wurde. Dieselbe Tabelle hatte einen Aktualisierungsauslöser, der ausgelöst wurde und den auslöste Prozedur in eine Endlosschleife. Sobald der Fehler gefunden wurde, verschwand der Fehler.

Shelbypereira
quelle