= DATE_SUB(NOW(), INTERVAL :days DAY) ORDER BY created_at DESC LIMIT 5000"; // Limit to prevent massive payloads $stmt = $con->prepare($sql); $stmt->bindValue(':days', (int) $days, PDO::PARAM_INT); $stmt->execute(); $locations = $stmt->fetchAll(PDO::FETCH_ASSOC); echo json_encode([ "status" => "success", "data" => $locations ]); } catch (Exception $e) { error_log("Error fetching heatmap data: " . $e->getMessage()); echo json_encode(["status" => "error", "message" => "Server error"]); } ?>