Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Abfragen können nicht ausgeführt werden, während andere ungepufferte Abfragen aktiv sind Fehler in Schleife

Nachdem Sie alle Ergebnisse in Ihrer Ausführungsschleife abgerufen haben, sollten Sie das nächste Rowset abrufen und dann den Cursor schließen, bevor Sie versuchen, die gespeicherte Prozedur erneut auszuführen. Versuchen Sie Folgendes:

foreach($data_arr AS $key => $val){
    $values = $val;
    $stmt->execute();
    $res = $stmt->fetchAll();
    $stmt->nextRowset();   // NEW: Get the next rowset after fetching your results
    $stmt->closeCursor();  // NEW: Close the cursor
}

Die wirklich wichtige Ergänzung hier ist der Aufruf von nextRowSet() . Unter der Haube gibt PDO ein zweites Rowset zurück auf die Sie zugreifen müssen, bevor Sie eine zweite (und nachfolgende) gespeicherte Prozedur auf derselben Verbindung ausführen.