'未提供VIP客户ID']); exit; } $vipId = intval($_GET['vip_id']); // 尝试从数据库获取数据 $lastBooking = null; try { // 首先获取VIP客户的电话号码 $getVipPhone = "SELECT phone FROM vip_customers WHERE id = :vipId"; $stmtPhone = $pdo->prepare($getVipPhone); $stmtPhone->bindParam(':vipId', $vipId, PDO::PARAM_INT); $stmtPhone->execute(); $vipInfo = $stmtPhone->fetch(PDO::FETCH_ASSOC); if (!$vipInfo || !$vipInfo['phone']) { echo json_encode(['has_booking' => false]); exit; } $vipPhone = $vipInfo['phone']; // 查询该VIP客户的最近一次预约 $sql = "SELECT b.id, b.start_time, b.duration, p.package_name FROM bookings b LEFT JOIN packages p ON b.package_id = p.id WHERE b.phone = :vipPhone AND b.status != '已取消' ORDER BY b.start_time DESC LIMIT 1"; $stmt = $pdo->prepare($sql); $stmt->bindParam(':vipPhone', $vipPhone, PDO::PARAM_STR); $stmt->execute(); $lastBooking = $stmt->fetch(PDO::FETCH_ASSOC); } catch (PDOException $e) { // 数据库查询失败,返回错误但继续执行 echo json_encode(['error' => '数据库查询失败: ' . $e->getMessage()]); exit; } // 如果没有找到记录,返回空结果 if (!$lastBooking) { echo json_encode(['has_booking' => false]); exit; } // 格式化返回数据 // 从start_time中提取日期和时间 $startTime = new DateTime($lastBooking['start_time']); $response = [ 'has_booking' => true, 'appointment_date' => $startTime->format('Y-m-d'), 'appointment_time' => $startTime->format('H:i'), 'package_name' => $lastBooking['package_name'] ? $lastBooking['package_name'] : '自定义服务', 'duration' => $lastBooking['duration'] ]; echo json_encode($response); // 关闭数据库连接 $pdo = null; // 系统现在只返回实际数据库中的预约记录数据