在while循环中无法通过fetch_object()获得预期结果

问题描述 投票:-1回答:1

我正在一个项目中,我显示用户上传的一些图像,并使用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是我查询的结果对象。

我的代码的问题是,while循环从第二行开始迭代并跳过第一行。因此,我的图片库会将除最新上传的图片以外的所有图片显示到服务器。我还测试了循环跳过1st的原因是因为$photo变量正在获取除1st(或最新的)以外的所有条目,我还测试了fetch_assoc()fetch_object()给出的结果相同,即少一行,何时我用$media->num-rows检查查询返回的行数,它返回用户上传的确切行数。我只是找不到为什么我没有得到第一行?

php mysql wordpress
1个回答
0
投票

您正在获取第一个结果而不使用它

[运行fetch_assoc()时,您正在获取第一个结果。

$media->fetch_assoc();

一旦获取了结果,将不会再次获取它,因此,当您遍历$media时,该结果将不再可用,也将不再使用。


删除下面的代码,您将不会跳过第一次迭代:

$ph1 = $media->fetch_assoc();
echo "testarray";
print_r($ph1);
© www.soinside.com 2019 - 2024. All rights reserved.