Files
edu/bbs/db_conn.php

63 lines
1.7 KiB
PHP

<?php
/**
* db_conn.php - MariaDB PDO
*/
// 세션 쿠키 도메인을 서브도메인 공유가 가능하도록 설정
session_set_cookie_params(0, '/', '.baroncs.co.kr');
// 세션이 시작되지 않았다면 시작
if (session_status() === PHP_SESSION_NONE) {
session_start();
}
function db_conn(): PDO
{
static $pdo = null;
if ($pdo !== null) { return $pdo; }
$host = 'localhost';
$port = 3306;
$dbname = 'baronhomep';
$user = 'baronhomep';
$pass = 'baron3840!!';
$charset = 'utf8mb4';
$dsn = "mysql:host={$host};dbname={$dbname};charset={$charset}";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_TIMEOUT => 5,
];
try {
$pdo = new PDO($dsn, $user, $pass, $options);
$pdo->exec("SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci");
} catch (PDOException $e) {
error_log('[DB_CONN ERROR] ' . $e->getMessage());
throw new RuntimeException('DB error: ' . $e->getMessage());
}
return $pdo;
}
// 직접 실행 시 연결 테스트
if (basename(__FILE__) === basename($_SERVER['SCRIPT_FILENAME'] ?? '')) {
header('Content-Type: text/html; charset=utf-8');
echo '<h2>DB 연결 테스트</h2>';
try {
$pdo = db_conn();
$ver = $pdo->query('SELECT VERSION()')->fetchColumn();
echo "<p style='color:green'>연결 성공 - MariaDB {$ver}</p>";
$tables = $pdo->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN);
echo '<p>테이블 (' . count($tables) . '개):</p><ul>';
foreach ($tables as $t) {
echo '<li>' . htmlspecialchars($t) . '</li>';
}
echo '</ul>';
} catch (Exception $e) {
echo "<p style='color:red'>실패: " . htmlspecialchars($e->getMessage()) . "</p>";
}
}