Files
sam-kd/output/fetch_estimate.php
hskwon aca1767eb9 초기 커밋: 5130 레거시 시스템
- URL 하드코딩 → .env APP_URL 기반 동적 URL로 변경
- DB 연결 하드코딩 → .env 기반으로 변경
- MySQL strict mode DATE 오류 수정
2025-12-10 20:14:31 +09:00

54 lines
1.9 KiB
PHP

<?php
require_once($_SERVER['DOCUMENT_ROOT'] . "/session.php");
require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php");
$pdo = db_connect();
$search = $_POST['search'] ?? ''; // 검색어 (없으면 빈 문자열)
$whichItem = $_POST['whichItem'] ?? ''; // 스크린, 스라트
if (!isset($DB)) {
$DB = 'chandj'; // 실제 데이터베이스 이름으로 설정
}
try {
// 1. 테이블의 컬럼 목록 가져오기
$columnQuery = $pdo->query("SHOW COLUMNS FROM {$DB}.estimate");
$columns = $columnQuery->fetchAll(PDO::FETCH_COLUMN);
// 2. 기본 WHERE 조건 설정 (major_category 필터 적용)
$conditions = ["major_category = :whichItem"];
$bindParams = [":whichItem" => $whichItem];
// 3. 검색어가 있는 경우, 전체 컬럼에서 LIKE 검색 적용
if (!empty($search)) {
$searchConditions = [];
foreach ($columns as $index => $column) {
$paramName = ":search" . $index; // 유니크한 바인딩 변수 생성 (:search0, :search1, ...)
$searchConditions[] = "$column LIKE $paramName";
$bindParams[$paramName] = "%{$search}%";
}
$conditions[] = "(" . implode(" OR ", $searchConditions) . ")";
}
// 4. 최종 SQL 쿼리 구성
$sql = "SELECT * FROM {$DB}.estimate WHERE " . implode(" AND ", $conditions) . " AND (is_deleted IS NULL or is_deleted ='0') ORDER BY indate DESC";
$stmh = $pdo->prepare($sql);
// 5. 1:1 바인딩 적용 (PHP 7.3 호환)
foreach ($bindParams as $key => $val) {
$stmh->bindValue($key, $val, PDO::PARAM_STR);
}
$stmh->execute();
$output_rows = $stmh->fetchAll(PDO::FETCH_ASSOC);
// JSON 출력
header('Content-Type: application/json');
echo json_encode($output_rows ?: []);
} catch (PDOException $Exception) {
header('Content-Type: application/json');
echo json_encode(["error" => $Exception->getMessage()]);
exit;
}
?>