Make a list of stations by checking next_station column value
WITH RECURSIVE 
cte AS ( SELECT station, next_station, 1 route_order
         FROM routes
         WHERE station = @source
           AND route_id = @route_id
         UNION ALL
         SELECT cte.next_station, routes.next_station, cte.route_order + 1
         FROM routes, cte
         WHERE routes.station = cte.next_station 
           AND cte.next_station != @source
           AND cte.station != @destination
           AND routes.route_id = @route_id )
SELECT * 
FROM cte
WHERE @destination = ( SELECT station 
                       FROM cte 
                       ORDER BY route_order DESC LIMIT 1 )
;


Wrong route selection (including cycles) allowed - in such case the resultset will be empty.