prepare($getAppSql); $stmt->bind_param("i", $appId); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows === 0) { header('Location: index.php?error=App不存在'); exit; } $app = $result->fetch_assoc(); // 获取所有版本 $versions = []; $getVersionsSql = "SELECT * FROM app_versions WHERE app_id = ? ORDER BY created_at DESC"; $stmt = $conn->prepare($getVersionsSql); $stmt->bind_param("i", $appId); $stmt->execute(); $result = $stmt->get_result(); while ($row = $result->fetch_assoc()) { $versions[] = $row; } $success = ''; $error = ''; // 处理添加版本 if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['add_version'])) { $version = $_POST['version']; $changelog = $_POST['changelog']; if (empty($version)) { $error = '版本号不能为空'; } elseif (empty($_FILES['app_file']['name'])) { $error = '请上传App文件'; } else { $uploadDir = '../files/'; $fileName = basename($_FILES['app_file']['name']); $targetPath = $uploadDir . $fileName; if (move_uploaded_file($_FILES['app_file']['tmp_name'], $targetPath)) { $insertVersionSql = "INSERT INTO app_versions (app_id, version, changelog, file_path, created_at) VALUES (?, ?, ?, ?, NOW())"; $stmt = $conn->prepare($insertVersionSql); $stmt->bind_param("isss", $appId, $version, $changelog, $targetPath); if ($stmt->execute() === TRUE) { header('Location: manage_versions.php?app_id=' . $appId . '&success=版本添加成功'); exit; } else { $error = '版本添加失败: ' . $conn->error; unlink($targetPath); // 删除已上传的文件 } } else { $error = '文件上传失败'; } } } // 处理删除版本 if (isset($_GET['delete_id']) && is_numeric($_GET['delete_id'])) { $versionId = $_GET['delete_id']; // 获取版本信息 $getVersionSql = "SELECT file_path FROM app_versions WHERE id = ? AND app_id = ?"; $stmt = $conn->prepare($getVersionSql); $stmt->bind_param("ii", $versionId, $appId); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows === 1) { $version = $result->fetch_assoc(); // 删除文件 if (file_exists($version['file_path'])) { unlink($version['file_path']); } // 删除数据库记录 $deleteVersionSql = "DELETE FROM app_versions WHERE id = ? AND app_id = ?"; $stmt = $conn->prepare($deleteVersionSql); $stmt->bind_param("ii", $versionId, $appId); if ($stmt->execute() === TRUE) { header('Location: manage_versions.php?app_id=' . $appId . '&success=版本删除成功'); exit; } else { $error = '版本删除失败: ' . $conn->error; } } else { $error = '版本不存在'; } } // 处理编辑版本 if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['edit_version'])) { $versionId = $_POST['version_id']; $version = $_POST['version']; $changelog = $_POST['changelog']; if (empty($version)) { $error = '版本号不能为空'; } else { // 检查是否上传了新文件 $fileUpdate = ''; $params = ['ss', $version, $changelog, $versionId, $appId]; if (!empty($_FILES['new_app_file']['name'])) { $uploadDir = '../files/'; $fileName = basename($_FILES['new_app_file']['name']); $targetPath = $uploadDir . $fileName; if (move_uploaded_file($_FILES['new_app_file']['tmp_name'], $targetPath)) { // 获取旧文件路径 $getOldFileSql = "SELECT file_path FROM app_versions WHERE id = ? AND app_id = ?"; $stmt = $conn->prepare($getOldFileSql); $stmt->bind_param("ii", $versionId, $appId); $stmt->execute(); $result = $stmt->get_result(); $oldVersion = $result->fetch_assoc(); // 删除旧文件 if (file_exists($oldVersion['file_path'])) { unlink($oldVersion['file_path']); } $fileUpdate = ", file_path = ?"; $params[0] = 'sss'; $params[] = $targetPath; } else { $error = '文件上传失败'; } } if (empty($error)) { $updateVersionSql = "UPDATE app_versions SET version = ?, changelog = ?" . $fileUpdate . " WHERE id = ? AND app_id = ?"; $stmt = $conn->prepare($updateVersionSql); // 动态绑定参数 $stmt->bind_param(...$params); if ($stmt->execute() === TRUE) { header('Location: manage_versions.php?app_id=' . $appId . '&success=版本更新成功'); exit; } else { $error = '版本更新失败: ' . $conn->error; } } } } // 获取URL参数中的成功/错误消息 if (isset($_GET['success'])) { $success = $_GET['success']; } elseif (isset($_GET['error'])) { $error = $_GET['error']; } ?> 管理版本 - <?php echo htmlspecialchars($app['name']); ?>

管理版本:

管理该应用的所有版本

暂无版本记录
版本
发布日期: