Сбросить позицию курсора в PDO

$data=$stmt->fetchAll(); //Dumping the data shows the result. It is also setting the cursor at the end while($data=$stmt->fetch()) { //Does not enters loop //If fetchAll() removes it work as usual } 

Я знаю, что не нужно дважды извлекать данные. Но мой главный вопрос: как сбросить позицию курсора в PDO?

AFAIK нет возможности сбросить позицию курсора с PDO – это может быть связано с совместимостью с некоторыми базами данных, которые не поддерживают сброс внутренних курсоров.

Если вы хотите итерации дважды по результатам, выберите его в массив и выполните итерацию по этому массиву:

 <?php $results = $stmt->fetchAll(); foreach($results as $row) { // first } foreach($results as $row) { // second } 

Редактирование Некоторые базы данных поддерживают прокручиваемые курсоры. Чтобы использовать это, добавьте флаг PDO::CURSOR_SCROLL для prepare метода (см. Примеры на странице документации PDOFetch ). Но это только добавляет возможность двигаться вперед или назад, а не полностью перематывать. Кроме того, не все базы данных поддерживают этот тип курсора (например, MySQL не работает).