Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: while( $row = mysql_fetch_assoc($result) )
Форумы портала PHP.SU » » Вопросы новичков » while( $row = mysql_fetch_assoc($result) )

Страниц (1): [1]
 

1. Macka_CMEXA - 21 Июля, 2012 - 04:56:02 - перейти к сообщению
Не бейти за возможно совсем нубский вопрос, но реально не могу понять.



почему в данном случае цикл исправно работает
2. armancho7777777 - 21 Июля, 2012 - 05:28:50 - перейти к сообщению
Пока mysql_fetch_assoc($result) не равен false.
Т.е. пока mysql_fetch_assoc() возвращает ряд результата запроса.
3. Macka_CMEXA - 21 Июля, 2012 - 05:57:12 - перейти к сообщению
мне непонятно вот это "пока возвращает" ((
хотя.. как я понимаю mysql_fetch_assoc обратывает $result не сразу весь за 1 заход? тоесть это и получается "пока возвращает"
4. PATCH - 21 Июля, 2012 - 06:57:39 - перейти к сообщению
Macka_CMEXA пишет:
хотя.. как я понимаю mysql_fetch_assoc обратывает $result не сразу весь за 1 заход? тоесть это и получается "пока возвращает"

yes он обрабатывает по 1 записи за каждый заход (обращение)
5. Hawkmoth - 21 Июля, 2012 - 12:00:22 - перейти к сообщению
Подключусь к теме, тоже хотел спросить, но стеснялся))
всегда думал, что без конструкции типа

такой цикл не сработает.
Но он прекрасно работает и без нее.
Почему?
Как PHP понимает, что надо перевести указатель?
6. KingStar - 21 Июля, 2012 - 12:03:17 - перейти к сообщению
while( true ) - это тебе будет бесконечный цикл

mysql_fetch_assoc($result) - каждый раз берет каждый результат массива, и в конце массива выдает false, чем и вызывает окончание цикла

ну а $row = присваивает переменной текущий результат

Hawkmoth пишет:
Как PHP понимает, что надо перевести указатель?

вот так вот нам подсабили разработчики )))
7. Hawkmoth - 21 Июля, 2012 - 12:23:58 - перейти к сообщению
KingStar пишет:
while( true ) - это тебе будет бесконечный цикл

mysql_fetch_assoc($result) - каждый раз берет каждый результат массива, и в конце массива выдает false, чем и вызывает окончание цикла

ну а $row = присваивает переменной текущий результат


По этим пунктам вопроса и не возникалоУлыбка
KingStar пишет:
вот так вот нам подсабили разработчики )))


А вот это ответ на вопрос, который, впрочем, рождает другие вопросы Улыбка
8. Мелкий - 21 Июля, 2012 - 18:31:15 - перейти к сообщению
Hawkmoth пишет:
Но он прекрасно работает и без нее.
Почему?

Т.к. mysql_fetch_* всегда неявно вызывают mysql_data_seek и смещает результат на следующую строку.
mysql_data_seek нужен только чтобы вернуться назад (например, чтобы ещё раз обойти результат в while) или рандомно прыгать по результату.
9. Hawkmoth - 21 Июля, 2012 - 18:58:17 - перейти к сообщению
Мелкий пишет:
Т.к. mysql_fetch_* всегда неявно вызывают mysql_data_seek и смещает результат на следующую строку.
mysql_data_seek нужен только чтобы вернуться назад (например, чтобы ещё раз обойти результат в while) или рандомно прыгать по результату.


Мелкий, спасибо!
Плюсанул.
А я, как дурак, вызывал эту mysql_data_seek() где надо и где не надо.

 

Powered by ExBB FM 1.0 RC1