Was just reading an article and it said that Salmonella, which is the most common type of food poisoning can take anywhere from 1 to 3 days to show up. So there's a good chance that he had it before he got on the ship.
But sorry to hear your son got sick.