La solita risposta è:i tuoi dati cercano direttamente nell'array PDOStatement::fetchAll
... Ma è SBAGLIATO SE la query recupera molti dati (!).
Ci sono 2 soluzioni reali,
1) se il database lo consente utilizzare PDO::FETCH_ORI_ABS
o PDO::FETCH_ORI_REL
,esempio,
$result = $sth->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_ABS, 973);
(EDIT) Ma, come commentato da @ChoiZ, avere una Limitazione PDO-MySQL :"MySQL non supporta cursors " (fuori programmi memorizzati) "e il driver non può emularli per te"... Prova più tardi o con i fork di MySQL, come MariaDB.
2) utilizzare la soluzione del database (una sorta di impaginazione). Esempio:
SELECT a, b FROM table LIMIT 1, 973