getenv('DB_HOST') ?: '127.0.0.1', 'port' => getenv('DB_PORT') ?: '3306', 'name' => getenv('DB_NAME') ?: 'default_db', 'user' => getenv('DB_USER') ?: 'default_user', 'pass' => getenv('DB_PASS') ?: 'default_pass', ]; if (empty($config['name'])) die('DB_NAME is not set'); if (empty($config['user'])) die('DB_USER is not set'); return $config; } function db() { static $pdo; if ($pdo) { return $pdo; } try { $c = get_db_config(); $dsn = sprintf('mysql:host=%s;port=%d;dbname=%s;charset=utf8mb4', $c['host'], $c['port'], $c['name']); $pdo = new PDO($dsn, $c['user'], $c['pass'], [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]); return $pdo; } catch (PDOException $e) { error_log($e->getMessage()); http_response_code(500); die('Database connection failed. Check server logs.'); } }