Sau khi bạn tìm nạp tất cả các kết quả trong vòng lặp thực thi của mình, bạn sẽ nhận được bộ hàng tiếp theo và sau đó đóng con trỏ trước khi cố gắng thực thi lại quy trình đã lưu trữ. Hãy thử điều này:
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
}
Sự bổ sung thực sự quan trọng ở đây là lệnh gọi tới nextRowSet () . Dưới mui xe, PDO đang trả lại hàng ghế thứ hai mà bạn cần truy cập trước khi thực hiện quy trình được lưu trữ thứ hai (và tiếp theo) trên cùng một kết nối.