не получается результат, как ожидалось с fetch_object () в цикле while - PullRequest
0 голосов
/ 20 февраля 2020

я работаю над проектом, в котором я отображаю некоторые изображения, загруженные пользователем, и они извлекаются из таблицы БД методом fetch_object(), это мой код:

<?php 
     $ph1 = $media->fetch_assoc();
     echo "testarray";
     print_r($ph1);
     while ($photo = $media->fetch_object()) { ?>
          <li>
              <div class="gallery-item">
                   <a href="<?= $system->getDomain() ?>/uploads/<?= $photo->path ?>" data-fancybox="gallery">
                      <img src="<?= $system->getDomain() ?>/uploads/<?= $photo->path ?>" alt="User Uploaded Photos" />
                   </a>
               </div>
           </li>
<?php } ?>

здесь $media - мой результат объект из запроса.

проблема с моим кодом состоит в том, что, в то время как l oop начинает итерацию со второй строки и пропускает первую. Итак, моя галерея изображений показывает все изображения, кроме последнего загруженного изображения на сервер. Я также проверяю, что в то время как l oop пропускает 1-е, потому что переменная $photo получает все записи, кроме 1-го (или самого последнего), я также проверяю, что и fetch_assoc(), и fetch_object() дают одинаковый результат, т.е. одну строку меньше, и когда я проверяю количество строк, возвращаемых из запроса, с помощью $media->num-rows, возвращается точное количество строк, загруженных пользователем. Я просто не могу найти, почему я не получаю первые строки ??

1 Ответ

2 голосов
/ 20 февраля 2020

Вы извлекаете первый результат и не используете его

Когда вы запускаете fetch_assoc(), вы извлекаете первый результат.

$media->fetch_assoc();

Как только результат извлечен, он больше не будет загружаться, поэтому, когда вы наберете oop - $media, этот результат больше не будет доступен и никогда не будет использован.


Удалите следующий код, и вы выиграли не пропустите первую итерацию:

$ph1 = $media->fetch_assoc();
echo "testarray";
print_r($ph1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...