Når du har hentet alle resultaterne i din eksekveringsløkke, bør du hente det næste rækkesæt og derefter lukke markøren, før du forsøger at udføre den lagrede procedure igen. Prøv dette:
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
}
Den virkelig vigtige tilføjelse her er opfordringen til nextRowSet() . Under motorhjelmen returnerer PDO endnu et rækkesæt som du skal have adgang til, før du udfører en anden (og efterfølgende) lagret procedure på den samme forbindelse.