['name' => '异能', 'color' => '#666666'], 20 => ['name' => '战士', 'color' => '#e74c3c'], 1 => ['name' => '法师', 'color' => '#3498db'], 3 => ['name' => '道士', 'color' => '#2ecc71'], 4 => ['name' => '刺客', 'color' => '#f39c12'], 5 => ['name' => '弓箭手', 'color' => '#9b59b6'], 60 => ['name' => '亡灵', 'color' => '#1abc9c'], 7 => ['name' => '圣骑士', 'color' => '#f1c40f'], ]; // 日耀神权时间格式化函数(适配数字格式:25122822 → 2025-12-28 22:00:00) function formatSunVipTime($time) { // 处理空值/0值 if (empty($time) || $time == 0 || $time == '00000000' || $time == '0000-00-00 00:00:00') { return '未开通'; } // 转换为字符串处理数字格式 $timeStr = (string)$time; // 如果是8位数字格式(如25122822) if (preg_match('/^\d{8}$/', $timeStr)) { // 解析:25 12 28 22 → 2025-12-28 22:00:00 $year = '20' . substr($timeStr, 0, 2); // 年份(25→2025) $month = substr($timeStr, 2, 2); // 月份(12) $day = substr($timeStr, 4, 2); // 日期(28) $hour = substr($timeStr, 6, 2); // 小时(22) // 拼接为标准时间格式 $standardTime = "{$year}-{$month}-{$day} {$hour}:00:00"; } else { // 非8位数字,尝试直接转换为标准时间 $standardTime = $timeStr; } // 验证时间格式是否有效 $timestamp = strtotime($standardTime); if ($timestamp === false) { return '格式错误
'.$timeStr.'
'; } $now = time(); // 判断是否过期 if ($timestamp < $now) { return '已过期
'.$standardTime.'
'; } else { return '有效
'.$standardTime.'
'; } } try { // 1. 建立数据库连接 $dsn = "mysql:host={$db_host};port={$db_port};dbname={$db_name};charset={$db_charset}"; $pdo = new PDO( $dsn, $db_user, $db_pass, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES {$db_charset}", PDO::ATTR_EMULATE_PREPARES => false ] ); // 2. 构建搜索条件 $whereCondition = ''; $params = []; if (!empty($searchName)) { $whereCondition = "WHERE name LIKE :search_name"; $params[':search_name'] = "%{$searchName}%"; } // 3. 动态构建字段列表(兼容字段不存在) // 先查询表结构,判断字段是否存在 $stmt = $pdo->query("DESC cq_user_new"); $columns = []; while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $columns[] = $row['Field']; } // 构建要查询的字段 $fieldList = [ 'id', 'name', 'mate', 'level', 'profession', 'money', 'money_saved', 'emoney', 'exp', 'account', 'last_login', 'reg_time' ]; // 如果赠送魔石字段存在则添加 if (in_array($giveMoneyField, $columns)) { $fieldList[] = $giveMoneyField; } // 如果神等级字段存在则添加 if (in_array($godLevelField, $columns)) { $fieldList[] = $godLevelField; } // 如果日耀神权时间字段存在则添加 if (in_array($sunVipEndTimeField, $columns)) { $fieldList[] = $sunVipEndTimeField; } $fieldStr = implode(', ', $fieldList); // 4. 构建统计SQL(兼容字段不存在) $statsFields = [ "COUNT(*) AS total_users", "MAX(level) AS max_level", "SUM(money + money_saved) AS total_money", "SUM(emoney) AS total_emoney" ]; if (in_array($giveMoneyField, $columns)) { $statsFields[] = "SUM({$giveMoneyField}) AS total_emoney2"; } if (in_array($godLevelField, $columns)) { $statsFields[] = "MAX({$godLevelField}) AS max_godleve"; } if (in_array($sunVipEndTimeField, $columns)) { // 统计有效日耀神权用户(排除空值、0值、8位全0、过期时间) $statsFields[] = "COUNT(CASE WHEN {$sunVipEndTimeField} != '' AND {$sunVipEndTimeField} != 0 AND {$sunVipEndTimeField} != '00000000' THEN 1 END) AS has_sunvip_users"; } $statsFieldStr = implode(', ', $statsFields); $statsSql = " SELECT {$statsFieldStr} FROM cq_user_new {$whereCondition} "; $statsStmt = $pdo->prepare($statsSql); $statsStmt->execute($params); $stats = $statsStmt->fetch(); $totalUsers = $stats['total_users']; $maxLevel = $stats['max_level']; $totalMoney = $stats['total_money']; $totalEMoney = $stats['total_emoney'] ?: 0; $totalEMoney2 = isset($stats['total_emoney2']) ? $stats['total_emoney2'] ?: 0 : 0; $maxGodLeve = isset($stats['max_godleve']) ? $stats['max_godleve'] ?: 0 : 0; $hasSunVipUsers = isset($stats['has_sunvip_users']) ? $stats['has_sunvip_users'] ?: 0 : 0; // 5. 获取总页数 $totalPages = ceil($totalUsers / $pageSize); // 6. 读取当前页用户数据 $userSql = " SELECT {$fieldStr} FROM cq_user_new {$whereCondition} ORDER BY {$sortField} {$sortType}, id ASC LIMIT :offset, :pageSize "; $stmt = $pdo->prepare($userSql); // 绑定参数 foreach ($params as $key => $value) { $stmt->bindValue($key, $value); } $stmt->bindParam(':offset', $offset, PDO::PARAM_INT); $stmt->bindParam(':pageSize', $pageSize, PDO::PARAM_INT); $stmt->execute(); $users = $stmt->fetchAll(); } catch (PDOException $e) { // 友好错误提示 die("数据库操作失败:" . $e->getMessage() . "
请检查:1.字段名是否正确 2.数据库连接信息是否正确 3.表结构是否匹配"); } // 构建通用参数 function buildParams($page, $searchName, $sortField, $sortType) { return http_build_query([ 'page' => $page, 'search_name' => $searchName, 'sort_field' => $sortField, 'sort_type' => $sortType ]); } // 排序字段名称映射 function getSortFieldName($field, $godLevelField, $giveMoneyField, $sunVipEndTimeField) { $map = [ 'level' => '等级', 'emoney' => '魔石', $giveMoneyField => '赠送魔石', $godLevelField => '神等级', $sunVipEndTimeField => '日耀神权时间', 'money' => '金币', 'id' => 'ID' ]; return isset($map[$field]) ? $map[$field] : $field; } ?> 游戏后台管理系统 - 用户管理
用户管理系统
总用户数
最高等级
最高神等级
日耀神权用户数
总魔石数
总赠送魔石数
总金币(含存款)

用户列表

搜索关键词: | 匹配结果: 条记录 | 当前排序:
0 ? date('Y-m-d H:i:s', $u['last_login']) : '未登录'; $regTime = $u['reg_time'] > 0 ? date('Y-m-d H:i:s', $u['reg_time']) : '未知'; $profId = (int)$u['profession']; if (isset($professionConfig[$profId])) { $profName = $professionConfig[$profId]['name']; $profColor = $professionConfig[$profId]['color']; } else { $profName = "未知职业({$profId})"; $profColor = '#888888'; } $emoney = $u['emoney'] ?: 0; $emoneyFormatted = number_format($emoney); $emoney2 = isset($u[$giveMoneyField]) ? $u[$giveMoneyField] ?: 0 : 0; $emoney2Formatted = number_format($emoney2); $godleve = isset($u[$godLevelField]) ? $u[$godLevelField] ?: 0 : 0; $sunVipEndTime = isset($u[$sunVipEndTimeField]) ? $u[$sunVipEndTimeField] : ''; $sunVipTimeHtml = formatSunVipTime($sunVipEndTime); // 计算表格列数 $colCount = 9; if (in_array($godLevelField, $columns)) $colCount++; if (in_array($giveMoneyField, $columns)) $colCount++; if (in_array($sunVipEndTimeField, $columns)) $colCount++; ?>
用户ID 用户名 配偶 等级 神等级 职业 金币 存款 魔石 赠送魔石 日耀神权时间 最后登录 注册时间
未找到包含「」的用户 当前页无数据