$memberId, 'sys_comp_code' => $sysCompCode, 'session_keys' => array_keys($_SESSION), ]; if ($memberId === '') { echo json_encode(['success' => false, 'error' => 'not_logged_in'] + $diag, JSON_UNESCAPED_UNICODE); exit; } try { $pdo = db_conn(); $pdo->exec("SET NAMES 'utf8mb4'"); // 1. 사용자 정보 $userSt = $pdo->prepare('SELECT * FROM edu_users WHERE member_id = ? ORDER BY sys_comp_code LIMIT 1'); $userSt->execute([$memberId]); $userRow = $userSt->fetch(PDO::FETCH_ASSOC); $diag['user_info'] = $userRow ? [ 'name' => $userRow['name'] ?? '', 'rank_name' => $userRow['rank_name'] ?? '', 'sys_comp_code' => $userRow['sys_comp_code'] ?? '', ] : null; // 2. 저장된 키워드 (sys_comp_code 제약 없이) $kwSt = $pdo->prepare(" SELECT uk.keyword_code, ec.code_name AS keyword_name, uk.member_id, uk.sys_comp_code FROM edu_user_keywords uk JOIN edu_codes ec ON ec.base_code = uk.keyword_code WHERE uk.member_id = ? ORDER BY uk.keyword_code "); $kwSt->execute([$memberId]); $savedKws = $kwSt->fetchAll(PDO::FETCH_ASSOC); $diag['saved_keywords'] = $savedKws; $diag['saved_keywords_count'] = count($savedKws); // 3. 테이블 존재 확인 $tblCheck = []; foreach (['edu_user_keywords', 'edu_codes', 'edu_recommend_keywords', 'edu_contents'] as $tbl) { try { $cnt = $pdo->query("SELECT COUNT(*) FROM {$tbl}")->fetchColumn(); $tblCheck[$tbl] = $cnt; } catch (Exception $e) { $tblCheck[$tbl] = 'ERROR: ' . $e->getMessage(); } } $diag['table_check'] = $tblCheck; // 3b. edu_recommend_keywords 컬럼 확인 try { $cols = $pdo->query("SHOW COLUMNS FROM edu_recommend_keywords")->fetchAll(PDO::FETCH_ASSOC); $diag['edu_recommend_keywords_columns'] = array_column($cols, 'Field'); } catch (Exception $e) { $diag['edu_recommend_keywords_columns'] = 'ERROR: ' . $e->getMessage(); } // 4. 회사 추천 키워드 샘플 (main_data.php와 동일 규칙) try { $admSt = $pdo->prepare(" SELECT rk.keyword_code, ec.code_name AS keyword_name, rk.is_active, rk.sys_comp_code FROM edu_recommend_keywords rk JOIN edu_codes ec ON ec.base_code = rk.keyword_code WHERE rk.is_active = 1 AND rk.keyword_code IS NOT NULL AND rk.keyword_code <> '' AND ec.group_code = 'KW100' ORDER BY rk.keyword_code LIMIT 2 "); $admSt->execute(); $admKws = $admSt->fetchAll(PDO::FETCH_ASSOC); $diag['admin_keywords_sample'] = $admKws; $diag['admin_keywords_count'] = count($admKws); } catch (Exception $e) { $diag['admin_keywords_sample'] = 'ERROR: ' . $e->getMessage(); $diag['admin_keywords_count'] = 0; } echo json_encode(['success' => true] + $diag, JSON_UNESCAPED_UNICODE); } catch (Throwable $e) { echo json_encode([ 'success' => false, 'error' => $e->getMessage(), ] + $diag, JSON_UNESCAPED_UNICODE); }