我有一个存储图像细节的数据库表。从这个我想得到一个准确的6个图像(仅作为字符串),并显示图像作为背景图像的数字标签。
我正在努力得到6个图像路径,即使在数据库中只有4个。在这种情况下,我想再次回到前两行。另外,如果查询中有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
}
}
?>
任何帮助都会很好。提前感谢:)
1条答案
按热度按时间v09wglhw1#
从查询中删除order by子句。在数组中获得结果集后,使用php的shuffle函数。洗牌后,使用循环从洗牌数组的前6个图像生成图像。
根据db表中有多少图像,使用order by rand可能会造成相当糟糕的性能损失