beginTransaction(); /* ---------- 신규 추가(INSERT) ---------- */ if ($inserts) { // 호출 시 파라미터 개수와 이름을 정확히 맞춤 $stmtI = $pdo->prepare("SELECT kngil.sp_item_i(:itm_cd, :itm_nm, :area, :itm_amt, :use_yn, :rmks, :cid)"); foreach ($inserts as $r) { $stmtI->execute([ ':itm_cd' => $r['itm_cd'] ?? '', // 데이터가 없으면 빈 글자라도 보냄 ':itm_nm' => $r['itm_nm'] ?? '', ':area' => $r['area'] ?? 0, ':itm_amt' => $r['itm_amt'] ?? 0, ':use_yn' => $r['use_yn'] ?? 'Y', ':rmks' => $r['rmks'] ?? '', ':cid' => $user_id ]); } } /* ---------- 수정(UPDATE) ---------- */ if ($updates) { $stmtU = $pdo->prepare("SELECT kngil.sp_item_u(:itm_cd, :itm_nm, :area, :itm_amt, :use_yn, :rmks, :mid)"); foreach ($updates as $r) { $stmtU->execute([ ':itm_cd' => $r['itm_cd'] ?? '', ':itm_nm' => $r['itm_nm'] ?? '', ':area' => $r['area'] ?? 0, ':itm_amt' => $r['itm_amt'] ?? 0, ':use_yn' => $r['use_yn'] ?? 'Y', ':rmks' => $r['rmks'] ?? '', ':mid' => $user_id ]); } } $pdo->commit(); echo json_encode(['status' => 'success']); break; default: throw new Exception('잘못된 요청'); } } catch (Exception $e) { if ($pdo->inTransaction()) { $pdo->rollBack(); } http_response_code(403); echo json_encode([ 'status' => 'error', 'message' => $e->getMessage() ]); }