Задать вопрос
StaDi
@StaDi
Курьер в it отделе

Объясните логику работы while с fetch_row в php?

Всем привет, хочу уточнить.
Я пишу while($data = $db->fetchRow()) получается пока true while будет выводить вызываемые строки.

Моменты которые мне не понятны:
1. получается у меня к бд идёт куча запросов в которых спрашивается есть ли ещё строка?
2. почему while такой умный понимает, что нужно запрашивать её строку, а допустим foreach( $db->fetchRow() as $dataKey => $dataValue) не такой умный и не запрашивает сверх строки?

Где прочитать, где узнать? Расскажите (:
  • Вопрос задан
  • 301 просмотр
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@serega_kaktus
Программист-самоучка, фрилансер
1. Кучи запросов нет. Запрос один и загружает все данные разом и хранит в своем кэше, а fetchRow выдает вам строки из кэша по одной.
2. Потому что while выполняет выражение в скобках при каждой итерации, таким образом вы получаете каждый раз новую строку. foreach же первое выражение в скобках выполняет один раз, и получив значение этого выражения на каждой итерации только обновляет $dataKey и $dataValue. Если использовать foreach($db->fetchAll() as $dataKey => $dataValue), то будет работать так же, как while
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
LittleFatNinja
@LittleFatNinja
горе девелопер, любитель лютой садомии
fetchRow это не запрос к бд
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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