false, 'error' => $msg ], JSON_UNESCAPED_UNICODE); exit; } // 파라미터 확인 $tablename = $_REQUEST['tablename'] ?? ''; $codes = $_REQUEST['codes'] ?? ''; if (!$tablename || !$codes) { respondError('테이블명 또는 자재 코드가 누락되었습니다.', 400); } // JSON → 배열 $wantedNames = json_decode($codes, true); if (!is_array($wantedNames) || empty($wantedNames)) { respondError('자재 코드를 파싱할 수 없습니다.', 400); } try { $pdo = db_connect(); // itemList 라는 JSON 컬럼을 담고 있는 테이블을 가정 $sql = "SELECT itemList FROM chandj.{$tablename} WHERE is_deleted IS NULL OR is_deleted = 0"; $st = $pdo->prepare($sql); $st->execute(); $found = []; while ($row = $st->fetch(PDO::FETCH_ASSOC)) { $items = json_decode($row['itemList'], true); if (!is_array($items)) { continue; } foreach ($items as $item) { // item_name 필드가 우리가 찾는 목록에 있으면 그대로 수집 if (isset($item['item_name']) && in_array($item['item_name'], $wantedNames, true) ) { // 사양(spec)과 길이(length)도 함께 전달 $found[] = [ 'item_name' => $item['item_name'], 'spec' => $item['spec'] ?? '', 'length' => $item['length'] ?? '', 'price' => $item['price'] ?? 0, ]; } } } if (empty($found)) { respondError('해당 자재를 찾을 수 없습니다.', 404); } // 성공 응답 echo json_encode([ 'success' => true, 'data' => $found ], JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES); } catch (PDOException $e) { error_log('Database Error: ' . $e->getMessage()); respondError('데이터베이스 오류가 발생했습니다.', 500); } catch (Exception $e) { error_log('General Error: ' . $e->getMessage()); respondError('서버 오류가 발생했습니다.', 500); }