Mysql
 sql >> Base de données >  >> RDS >> Mysql

Impossible d'exécuter des requêtes alors que d'autres requêtes non tamponnées sont actives erreur dans la boucle

Après avoir extrait tous les résultats de votre boucle d'exécution, vous devez obtenir l'ensemble de lignes suivant, puis fermer le curseur avant de tenter d'exécuter à nouveau la procédure stockée. Essayez ceci :

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
}

L'ajout vraiment important ici est l'appel à nextRowSet() . Sous le capot, PDO renvoie un deuxième rowset auquel vous devez accéder avant d'exécuter une deuxième procédure stockée (et les suivantes) sur la même connexion.