EDU 키워드 상세 진단';
echo '';
// 1. edu_content_keywords 전체 unique keyword_code 목록
echo '
1. edu_content_keywords - 전체 unique keyword_code
';
$rows = $pdo->query("
SELECT keyword_code, COUNT(*) as cnt
FROM edu_content_keywords
WHERE is_active = '1' OR is_active IS NULL
GROUP BY keyword_code
ORDER BY keyword_code
")->fetchAll();
echo '| keyword_code | 연결 콘텐츠 수 |
';
foreach ($rows as $r) {
echo "| {$r['keyword_code']} | {$r['cnt']} |
";
}
echo '
';
// 2. edu_recommend_keywords 구조 및 데이터
echo '2. edu_recommend_keywords 구조 및 데이터
';
$tables = $pdo->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN);
if (in_array('edu_recommend_keywords', $tables)) {
$cols = $pdo->query("SHOW COLUMNS FROM edu_recommend_keywords")->fetchAll();
echo '컬럼:
| Field | Type | Key | Default |
';
foreach ($cols as $c) {
echo "| {$c['Field']} | {$c['Type']} | {$c['Key']} | {$c['Default']} |
";
}
echo '
';
$rows = $pdo->query("SELECT * FROM edu_recommend_keywords LIMIT 20")->fetchAll();
if ($rows) {
$keys = array_keys($rows[0]);
echo '' . implode('', array_map(fn($k) => "| $k | ", $keys)) . '
';
foreach ($rows as $r) {
echo '' . implode('', array_map(fn($v) => '| ' . htmlspecialchars((string)$v) . ' | ', $r)) . '
';
}
echo '
';
} else {
echo '데이터 없음
';
}
} else {
echo '테이블 없음
';
}
// 3. edu_user_keywords 전체 데이터
echo '3. edu_user_keywords 전체
';
$rows = $pdo->query("SELECT * FROM edu_user_keywords ORDER BY member_id, keyword_code")->fetchAll();
if ($rows) {
$keys = array_keys($rows[0]);
echo '' . implode('', array_map(fn($k) => "| $k | ", $keys)) . '
';
foreach ($rows as $r) {
echo '' . implode('', array_map(fn($v) => '| ' . htmlspecialchars((string)$v) . ' | ', $r)) . '
';
}
echo '
';
} else {
echo '데이터 없음
';
}
// 4. edu_codes 에서 KW 계열 코드 확인
echo '4. edu_codes - KW 계열 코드 (keyword 관련)
';
$rows = $pdo->query("
SELECT * FROM edu_codes
WHERE base_code LIKE 'KW%'
ORDER BY base_code
")->fetchAll();
if ($rows) {
$keys = array_keys($rows[0]);
echo '' . implode('', array_map(fn($k) => "| $k | ", $keys)) . '
';
foreach ($rows as $r) {
echo '' . implode('', array_map(fn($v) => '| ' . htmlspecialchars((string)$v) . ' | ', $r)) . '
';
}
echo '
';
} else {
echo 'KW 계열 코드 없음
';
// edu_codes 전체 구조 확인
$cols = $pdo->query("SHOW COLUMNS FROM edu_codes")->fetchAll();
echo 'edu_codes 컬럼:| Field | Type |
';
foreach ($cols as $c) {
echo "| {$c['Field']} | {$c['Type']} |
";
}
echo '
';
// 샘플 10건
$sample = $pdo->query("SELECT * FROM edu_codes LIMIT 20")->fetchAll();
if ($sample) {
$keys = array_keys($sample[0]);
echo '' . implode('', array_map(fn($k) => "| $k | ", $keys)) . '
';
foreach ($sample as $r) {
echo '' . implode('', array_map(fn($v) => '| ' . htmlspecialchars((string)$v) . ' | ', $r)) . '
';
}
echo '
';
}
}
// 5. edu_code_group 구조 확인
echo '5. edu_code_group
';
if (in_array('edu_code_group', $tables)) {
$rows = $pdo->query("SELECT * FROM edu_code_group LIMIT 20")->fetchAll();
if ($rows) {
$keys = array_keys($rows[0]);
echo '' . implode('', array_map(fn($k) => "| $k | ", $keys)) . '
';
foreach ($rows as $r) {
echo '' . implode('', array_map(fn($v) => '| ' . htmlspecialchars((string)$v) . ' | ', $r)) . '
';
}
echo '
';
}
}
// 6. edu_contents 에서 keyword 관련 컬럼 값 샘플
echo '6. edu_contents - category 관련 고유값
';
$rows = $pdo->query("
SELECT category_code, category_group, COUNT(*) as cnt
FROM edu_contents
GROUP BY category_code, category_group
ORDER BY category_group, category_code
")->fetchAll();
echo '| category_code | category_group | 콘텐츠 수 |
';
foreach ($rows as $r) {
echo "| {$r['category_code']} | {$r['category_group']} | {$r['cnt']} |
";
}
echo '
';
// 7. edu_contents 중 keyword 연결된 영상 샘플 (edu_content_keywords join)
echo '7. edu_content_keywords ↔ edu_contents 조인 샘플
';
$rows = $pdo->query("
SELECT ck.keyword_code, c.content_id, c.title, c.category_group, c.content_url
FROM edu_content_keywords ck
JOIN edu_contents c ON c.content_id = ck.content_id
WHERE ck.is_active = '1'
ORDER BY ck.keyword_code, c.content_id
LIMIT 20
")->fetchAll();
if ($rows) {
$keys = array_keys($rows[0]);
echo '' . implode('', array_map(fn($k) => "| $k | ", $keys)) . '
';
foreach ($rows as $r) {
echo '' . implode('', array_map(fn($v) => '| ' . htmlspecialchars((string)$v) . ' | ', $r)) . '
';
}
echo '
';
} else {
echo '결과 없음
';
}
// 8. index.php 에서 사용하는 main_data 관련 api 로그 (있으면)
echo '8. API 관련 파일 목록 확인
';
$apiDir = __DIR__ . '/api/';
if (is_dir($apiDir)) {
foreach (scandir($apiDir) as $f) {
if ($f === '.' || $f === '..') continue;
$fpath = $apiDir . $f;
$size = filesize($fpath);
echo "$f ({$size}bytes)";
}
}