【问题标题】:not getting result as expected with fetch_object() in while loop在while循环中使用fetch_object()没有得到预期的结果
【发布时间】:2020-02-20 09:03:41
【问题描述】:

我正在做一个项目,我在其中显示用户上传的一些图像,它是使用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 循环从第二行开始迭代并跳过第一行。因此,我的图片库显示了除最新上传到服务器的图片之外的所有图片。我还测试了这个跳过第一个的while循环是因为$photo变量正在获取除第一个(或最新)之外的所有条目,我还测试fetch_assoc()fetch_object()都给出了相同的结果,即少一行,当我使用$media-&gt;num-rows 检查从查询返回的行数,它返回用户上传的确切行数。我就是找不到为什么我没有得到第一行??

【问题讨论】:

  • 能否请您添加您的查询? $system 是从哪里来的?请添加您的完整代码。
  • “while 循环从第 2 行开始迭代并跳过第 1 行” - 你在这里责备错了…… - 获取了第一条记录在循环之前,通过 $ph1 = $media-&gt;fetch_assoc();.

标签: php mysql wordpress


【解决方案1】:

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

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

$media->fetch_assoc();

一旦获取结果,就不会再次获取它,因此当您循环访问$media 时,该结果不再可用,也从未使用过。


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

$ph1 = $media->fetch_assoc();
echo "testarray";
print_r($ph1);

【讨论】:

    猜你喜欢
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 2022-01-24
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多