我正在一个项目中,我显示用户上传的一些图像,并使用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
检查查询返回的行数,它返回用户上传的确切行数。我只是找不到为什么我没有得到第一行?
[运行fetch_assoc()
时,您正在获取第一个结果。
$media->fetch_assoc();
一旦获取了结果,将不会再次获取它,因此,当您遍历$media
时,该结果将不再可用,也将不再使用。
删除下面的代码,您将不会跳过第一次迭代:
$ph1 = $media->fetch_assoc();
echo "testarray";
print_r($ph1);