@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){}

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

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

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽