0이면 Update $parentId = intval($data['parentId'] ?? 0); // 상위 id (Insert 시 사용) $name = trim($data['name'] ?? ''); // 예외 처리 if ($level < 1 || $level > 4) { echo json_encode(["result"=>"error","msg"=>"invalid level"]); exit; } if ($name === '') { echo json_encode(["result"=>"error","msg"=>"name is empty"]); exit; } try { switch($level) { case 1: // category_l1 if($id === 0) { // INSERT $sql = "INSERT INTO {$DB}.category_l1 (name) VALUES (:name)"; $st = $pdo->prepare($sql); $st->bindValue(':name', $name); $st->execute(); } else { // UPDATE $sql = "UPDATE {$DB}.category_l1 SET name=:name WHERE id=:id"; $st = $pdo->prepare($sql); $st->bindValue(':name', $name); $st->bindValue(':id', $id, PDO::PARAM_INT); $st->execute(); } break; case 2: // category_l2 if($id === 0) { // 새로 추가 → parentId가 category_l1의 id $sql = "INSERT INTO {$DB}.category_l2 (name, parent_id) VALUES (:name, :p)"; $st = $pdo->prepare($sql); $st->bindValue(':name', $name); $st->bindValue(':p', $parentId, PDO::PARAM_INT); $st->execute(); } else { // 수정 $sql = "UPDATE {$DB}.category_l2 SET name=:name WHERE id=:id"; $st = $pdo->prepare($sql); $st->bindValue(':name', $name); $st->bindValue(':id', $id, PDO::PARAM_INT); $st->execute(); } break; case 3: // category_l3 if($id === 0) { // parentId는 category_l2의 id $sql = "INSERT INTO {$DB}.category_l3 (name, parent_id) VALUES (:name, :p)"; $st = $pdo->prepare($sql); $st->bindValue(':name', $name); $st->bindValue(':p', $parentId, PDO::PARAM_INT); $st->execute(); } else { $sql = "UPDATE {$DB}.category_l3 SET name=:name WHERE id=:id"; $st = $pdo->prepare($sql); $st->bindValue(':name', $name); $st->bindValue(':id', $id, PDO::PARAM_INT); $st->execute(); } break; case 4: // category_l4 if($id === 0) { // parentId는 category_l3의 id $sql = "INSERT INTO {$DB}.category_l4 (name, parent_id) VALUES (:name, :p)"; $st = $pdo->prepare($sql); $st->bindValue(':name', $name); $st->bindValue(':p', $parentId, PDO::PARAM_INT); $st->execute(); } else { $sql = "UPDATE {$DB}.category_l4 SET name=:name WHERE id=:id"; $st = $pdo->prepare($sql); $st->bindValue(':name', $name); $st->bindValue(':id', $id, PDO::PARAM_INT); $st->execute(); } break; } echo json_encode(["result" => "ok"]); } catch (Exception $e) { echo json_encode([ "result" => "error", "msg" => $e->getMessage() ]); }