beginTransaction(); // detailJson이 있는지 확인 $sql = "SELECT COUNT(*) AS cnt FROM $DB.$tablename WHERE num=?"; $stmh = $pdo->prepare($sql); $stmh->bindValue(1, $num, PDO::PARAM_STR); $stmh->execute(); $row = $stmh->fetch(PDO::FETCH_ASSOC); if ($row['cnt'] > 0) { // detailJson이 이미 존재하므로 업데이트 처리 // 자료수정 $update_log = date("Y-m-d H:i:s") . " - " . $_SESSION["name"] . " " . $update_log . " "; $sql = "UPDATE $DB.$tablename SET detailJson=?, update_log=?, estimateTotal=?, EstimateFirstSum=?, EstimateUpdatetSum=?, EstimateDiffer=?, estimateSurang=? WHERE num=? LIMIT 1"; $stmh = $pdo->prepare($sql); $stmh->bindValue(1, $detailJson, PDO::PARAM_STR); // JSON 데이터를 text로 저장 $stmh->bindValue(2, $update_log, PDO::PARAM_STR); $stmh->bindValue(3, intval(str_replace(',', '', $estimateTotal)), PDO::PARAM_INT); // int 형태로 저장 $stmh->bindValue(4, intval(str_replace(',', '', $EstimateFirstSum)), PDO::PARAM_INT); // 추가된 필드 $stmh->bindValue(5, intval(str_replace(',', '', $EstimateUpdatetSum)), PDO::PARAM_INT); // 추가된 필드 $stmh->bindValue(6, intval(str_replace(',', '', $EstimateDiffer)), PDO::PARAM_INT); // 추가된 필드 $stmh->bindValue(7, intval(str_replace(',', '', $estimateSurang)), PDO::PARAM_INT); // 추가된 필드 $stmh->bindValue(8, $num, PDO::PARAM_STR); $stmh->execute(); } else { // detailJson이 없으므로 새로운 데이터로 삽입 $update_log = date("Y-m-d H:i:s") . " - " . $_SESSION["name"] . " "; $sql = "INSERT INTO $DB.$tablename (num, detailJson, update_log, estimateTotal, EstimateFirstSum, EstimateUpdatetSum, EstimateDiffer, estimateSurang) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"; $stmh = $pdo->prepare($sql); $stmh->bindValue(1, $num, PDO::PARAM_STR); $stmh->bindValue(2, $detailJson, PDO::PARAM_STR); // JSON 데이터를 text로 저장 $stmh->bindValue(3, $update_log, PDO::PARAM_STR); $stmh->bindValue(4, intval(str_replace(',', '', $estimateTotal)), PDO::PARAM_INT); // int 형태로 저장 $stmh->bindValue(5, intval(str_replace(',', '', $EstimateFirstSum)), PDO::PARAM_INT); // 추가된 필드 $stmh->bindValue(6, intval(str_replace(',', '', $EstimateUpdatetSum)), PDO::PARAM_INT); // 추가된 필드 $stmh->bindValue(7, intval(str_replace(',', '', $EstimateDiffer)), PDO::PARAM_INT); // 추가된 필드 $stmh->bindValue(8, intval(str_replace(',', '', $estimateSurang)), PDO::PARAM_INT); // 추가된 필드 $stmh->execute(); } // 트랜잭션 커밋 $pdo->commit(); // 응답 데이터 생성 $data = [ 'num' => $num, 'mode' => ($row['cnt'] > 0) ? 'modify' : 'insert', 'estimateTotal' => $estimateTotal, 'EstimateFirstSum' => $EstimateFirstSum, 'EstimateUpdatetSum' => $EstimateUpdatetSum, 'EstimateDiffer' => $EstimateDiffer, 'estimateSurang' => $estimateSurang, 'status' => 'success' ]; echo json_encode($data, JSON_UNESCAPED_UNICODE); } catch (PDOException $Exception) { // 예외 처리 error_log("오류: " . $Exception->getMessage()); $pdo->rollBack(); // 트랜잭션 롤백 http_response_code(500); echo json_encode(['error' => $Exception->getMessage()]); } catch (Exception $e) { error_log("오류: " . $e->getMessage()); $pdo->rollBack(); // 트랜잭션 롤백 http_response_code(500); echo json_encode(['error' => $e->getMessage()]); } ?>