首页 > 解决方案 > 使用 PHP 循环获取 MySQL 数据并重复直到获得一定数量

问题描述

我有一个存储图像详细信息的数据库表。从这里我想得到一个正好 6 个图像(仅作为字符串)并将图像显示为图形标签上的背景图像。

即使数据库中只有 4 个,我正在努力获得 6 个图像路径。在这种情况下,我想再次返回前两行。此外,如果查询中有 10 行,我只想随机选择 6 行。

到目前为止,我已经...

函数文件

// Slideshow images (Homepage)
function get_slideshow() {
    global $conn;
    $sql =  "SELECT id, caption, image, page_id 
                FROM slideshow
                ORDER BY id DESC";
    $stmt = $conn->prepare($sql);
    $stmt->execute();
    $result = $stmt->get_result();
    $stmt->free_result();
    $stmt->close();
    return $result;
}

索引.php

$slideshow = get_slideshow();

<?php
    if ($slideshow->num_rows > 0) {
        while($row = $slideshow->fetch_assoc()) {
?>
        <figure style="background-image:url(<?php echo '/photos/'.$row['image']; ?>)"></figure>
<?php   
        }
    }
?>

任何帮助都会很棒。提前致谢 :)

标签: phpmysqlloops

解决方案


从查询中删除 ORDER BY 子句。在数组中获得结果集后,使用 PHP 的 shuffle 函数。一旦它们被洗牌,使用一个循环从洗牌数组中的第一个 6 图像生成图像。

根据 db 表中有多少图像,使用 ORDER BY RAND 可能会产生相当糟糕的性能损失


推荐阅读