EDU 인덱스 영상 로딩 진단';
echo '';
// 1. 테이블 목록 확인
echo '
1. 관련 테이블 존재 여부
';
$tables = $pdo->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN);
$checkTables = ['edu_contents','edu_content_keywords','edu_keywords','edu_users','edu_user_keywords','edu_codes'];
echo '| 테이블명 | 존재 | 레코드 수 |
';
foreach ($checkTables as $tbl) {
$exists = in_array($tbl, $tables);
$count = 0;
if ($exists) {
$count = $pdo->query("SELECT COUNT(*) FROM `$tbl`")->fetchColumn();
}
$cls = $exists ? 'ok' : 'err';
echo "| $tbl | " . ($exists ? '✔' : '✘ 없음') . " | $count |
";
}
echo '
';
// 2. edu_contents 컬럼 구조
echo '2. edu_contents 컬럼 구조
';
if (in_array('edu_contents', $tables)) {
$cols = $pdo->query("SHOW COLUMNS FROM edu_contents")->fetchAll();
echo '| Field | Type | Null | Key | Default |
';
foreach ($cols as $c) {
echo "| {$c['Field']} | {$c['Type']} | {$c['Null']} | {$c['Key']} | {$c['Default']} |
";
}
echo '
';
// 샘플 데이터 3건
echo '2-1. edu_contents 샘플 (최대 5건)
';
$rows = $pdo->query("SELECT * FROM edu_contents LIMIT 5")->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 '⚠ edu_contents 에 데이터가 없습니다 (DB 초기화됨)
';
}
} else {
echo 'edu_contents 테이블이 존재하지 않습니다.
';
}
// 3. edu_content_keywords 구조 & 샘플
echo '3. edu_content_keywords (키워드-콘텐츠 매핑)
';
if (in_array('edu_content_keywords', $tables)) {
$cols = $pdo->query("SHOW COLUMNS FROM edu_content_keywords")->fetchAll();
echo '| Field | Type |
';
foreach ($cols as $c) {
echo "| {$c['Field']} | {$c['Type']} |
";
}
echo '
';
$rows = $pdo->query("SELECT * FROM edu_content_keywords LIMIT 5")->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 'edu_content_keywords 에 데이터가 없습니다.
';
}
} else {
echo 'edu_content_keywords 테이블이 없습니다.
';
}
// 4. edu_keywords 구조 & 샘플
echo '4. edu_keywords
';
if (in_array('edu_keywords', $tables)) {
$rows = $pdo->query("SELECT * FROM edu_keywords LIMIT 10")->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 'edu_keywords 에 데이터가 없습니다.
';
}
} else {
echo 'edu_keywords 테이블이 없습니다.
';
}
// 5. edu_user_keywords (유저-키워드 연결)
echo '5. edu_user_keywords
';
if (in_array('edu_user_keywords', $tables)) {
$cols = $pdo->query("SHOW COLUMNS FROM edu_user_keywords")->fetchAll();
echo '| Field | Type |
';
foreach ($cols as $c) {
echo "| {$c['Field']} | {$c['Type']} |
";
}
echo '
';
$rows = $pdo->query("SELECT * FROM edu_user_keywords LIMIT 10")->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 'edu_user_keywords 에 데이터가 없습니다.
';
}
} else {
echo 'edu_user_keywords 테이블이 없습니다.
';
}
// 6. 전체 테이블 목록
echo '6. DB 전체 테이블 목록 (' . count($tables) . '개)
';
echo '' . implode('', array_map(fn($t) => "- $t
", $tables)) . '
';