Задать вопрос
@banny_name

Почему PDO::fetchAll() очищается после первого использования?

Нужно 2 раза использовать fetchAll(),
1 - чтобы сохранить в переменную.
2 - для AR

1..
echo '<br><pre>';
var_dump($this->db->STH->fetchAll());
echo '</pre><br>';

2..
echo '<br><pre>';
var_dump($this->db->STH->fetchAll());
echo '</pre><br>';


Результат:
1:
array(2){
все что нашло...
}

2:array(0){}

Почему так, и как будет более правильно клонировать ?
  • Вопрос задан
  • 197 просмотров
Подписаться 2 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
объяснение проблемы - fetchAll забирает все данные до конца. Очевидно да? Что это значит на деле - когда мы выполняем запрос то база данных возвращает нам указатель на начало результата, у нас еще нет всего результата. Сделав fetchRow мы забираем первый результат, указатель переходит на следующую строчку и т.д. Потому то когда у нас уже нет результата мы получаем null.

Вот и с fetchAll выходит так же. Второй раз не выйдет.

p.s. пересмотрите свои взгляды на то, как вы работаете с данными. Используйте fetchAll один раз и реюзайте результат для чего вы там хотите странного.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы