Я не очень понимаю смысл PDOStatement, так как:
$PDO = new PDO();
$PDOS = $PDO->query($sql);
var_dump($PDOS->fetchAll()); //will return data
var_dump($PDOS->fetchAll()); //empty
Есть ли параметр, который необходимо передать, чтобы во 2-й раз fetchAll возвращал данные, но без повторного выполнения SQL?