guardando la query direi che hai un errore di forma su where ed order by su quanto vuoi ottenere:

codice:
WHERE `id` > '$start' 
AND `section` = '$section' 
ORDER BY `ord` ASC 
LIMIT 3
tu fai una ricerca su degli id > $start e quindi puoi trovare nn record con id superiori a $start.
questi nn record li ordini secondo un campo ord con contenuto non conosciuto a chi legge.

Quindi non e' detto che i record ricevuti con limit 3 siano ordinati anche come id. Poi tu trasferisci l'ultimo id della serie di tre ordinati secondo ord nella variabile $start che userai nella query successiva. Nulla vieta che l'ultimo id della serie ordinata secondo ord sia minore di uno o piu' id precedenti gia' estratti. In pratica dovresti ordinarli per id e non per ord se vuoi seguire la sequenza degli id.