【问题标题】:More nested while loops in PHPPHP 中更多的嵌套 while 循环
【发布时间】:2015-04-02 00:38:46
【问题描述】:

我试图从数据库中提取一些数据,但我需要两个 while 循环来嵌套 (fetch_assoc)。问题是内部循环不循环它只是给我数组的第一个元素,数组长度时间。

<?php
    $al_num = $_GET['album'];
    $photo_query = "SELECT photo FROM album WHERE album_number={$al_num}";
    $thumbnail_query = "SELECT thumbnail FROM album WHERE album_number={$al_num}";

    $photo_result = mysqli_query($connection, $photo_query);
    $thumbnail_result = mysqli_query($connection, $thumbnail_query);
?>




<?php while($photo = mysqli_fetch_assoc($photo_result)): ?>
    <?php while($thumb = mysqli_fetch_assoc($thumbnail_result)): ?>
        <li>
            <a href="images/<?php echo $photo['photo'] ?>" class="highslide" onclick="return hs.expand(this, config1 )">
            <img src="images/<?php echo $thumb['thumbnail'] ?>"  alt=""/>
            </a>
        </li>
<?php endwhile; ?>
<?php endwhile; ?>

【问题讨论】:

  • 您确定thumbnail 表中有多个记录吗?只是不要这样做。您的代码中存在严重的安全问题。您可以使用连接处理数据库层上的图像和缩略图,这是毫无意义的解决方案。
  • 我认为数据架构存在错误。您如何为某个相册保存许多缩略图和许多照片?您不需要一组照片和每个相册的缩略图吗?
  • 我的数据库表中有相同数量的缩略图和照片,我有专辑编号 (al_num)、照片名称和缩略图名称。
  • 这是我列出特定专辑图像的页面,它只是表格中的一个整数。我在页面中有包含专辑名称的数组。

标签: php mysql while-loop nested


【解决方案1】:

为什么不保持简单?

<?php
    $al_num = $_GET['album'];
    // Really good idea to check the $_GET['album'] first ...
    $photo_query = "SELECT photo, thumbnail FROM album WHERE album_number='".mysqli_real_escape_string ($connection, $al_num)."'";
    $photo_result = mysqli_query($connection, $photo_query);

    while(list ($photo, $thumb) = mysqli_fetch_row ($photo_result)) {
        ?>
        <li>
            <a href="images/<?php echo $photo ?>" class="highslide" onclick="return hs.expand(this, config1 )">
            <img src="images/<?php echo $thumb ?>"  alt=""/>
            </a>
        </li>
        <?php
    }
?>

【讨论】:

  • 我得到了这个:警告:mysqli_real_escape_string() 需要 2 个参数,1 个在 /home/mirko/Dropbox/htdocs/pdc/gallery.php 第 63 行给出
  • 对,我在mysqli_real_escape_string中添加了$connection。检查上面的代码。
  • 注意:未定义的偏移量:第 73 行 /home/mirko/Dropbox/htdocs/pdc/galerija.php 中的 1 注意:未定义的偏移量:/home/mirko/Dropbox/htdocs/pdc/ 中的 0第 73 行的 galerija.php 第 73 行是 while 循环开始的地方
  • 我搞定了,非常感谢。我没有将 assoc 更改为 row。这就是问题所在。
【解决方案2】:

好吧,尝试在一个“while”循环中从两个表中获取数据,这就是你将如何做到的

<?php while($photo = mysqli_fetch_assoc($photo_result) || $thumb = mysqli_fetch_assoc($thumbnail_result))
{ ?>

        <li>
            <a href="images/<?php echo $photo['photo'] ?>" class="highslide" onclick="return hs.expand(this, config1 )">
            <img src="images/<?php echo $thumb['thumbnail'] ?>"  alt=""/>
            </a>
        </li>
<?php } ?>

【讨论】:

  • 我试过这种方式,但后来我得到双倍数量的图像,一半没有链接部分(文件名)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-11
  • 2014-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多