Nadat u alle resultaten in uw execute-lus hebt opgehaald, moet u de volgende rijenset krijgen en vervolgens de cursor sluiten voordat u probeert de opgeslagen procedure opnieuw uit te voeren. Probeer dit:
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
}
De echt belangrijke toevoeging hier is de aanroep naar nextRowSet() . Onder de motorkap retourneert PDO een tweede rijenset die u moet openen voordat u een tweede (en volgende) opgeslagen procedure op dezelfde verbinding uitvoert.