Цикл While не срабатывает второй раз от объекта mysqli_result

SamyRed

Здравствуйте!

PHP:
  1. $positions = false;
  2. $q = $db->query («SELECT * FROM `positions` WHERE `company_id` = ‘».$company_id.«‘»);
  3. if ($q) {
  4.     if ($q->num_rows) {
  5.         $positions = $q;
  6.     }
  7. }

Затем вызов цикла While от объекта «$positions»:

PHP:
  1. <?php
  2. if ($positions !== false) {
  3. ?>
  4.             <select class=»form-select» name=»position» aria-label=»Choose position»>
  5.                 <option selected>_POSITION</option>
  6. <?php
  7.     while ($item = $positions->fetch_assoc ()) {
  8. ?>
  9.                 <option value=»<?=$item[‘id’]?>«><?=$item[‘title’]?></option>
  10. <?php
  11.     }
  12. ?>
  13.             </select>
  14. <?php
  15. }
  16. ?>

Тут всё работает как надо.
Вот второй вызов, он ничем не отличается от первого:

PHP:
  1. <?php
  2.             if ($positions !== false) {
  3. ?>
  4.                 <form>
  5.                     <select class=»form-select» name=»position» aria-label=»Choose position»>
  6.                         <option selected><?=$position?></option>
  7. <?php
  8.                 while ($item = $positions->fetch_assoc ()) {
  9. ?>
  10.                         <option value=»<?=$item[‘id’]?>«><?=$item[‘title’]?></option>
  11. <?php
  12.                 }
  13. ?>
  14.                     </select>
  15.                 </form>
  16. <?php
  17.             } else {
  18. ?>
  19.             <?=$position?>
  20. <?php
  21.             }
  22. ?>

А вто он уже не отрабатывает. var_dump ($positions) как перед первым так и перед вторым вызовом показывает одинаковый результат. Если удалить первый вызов, то второй работает. Как так?

 

miketomlin

У объекта mysqli_result есть внутренний указатель, который нужно сбрасывать:
https://gency.ru/comment/57

 

SamyRed

Понял, спасибо. Не знал.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *