php - 使用 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
}
}
?>
任何帮助都会很棒。提前致谢 :)
解决方案
从查询中删除 ORDER BY 子句。在数组中获得结果集后,使用 PHP 的 shuffle 函数。一旦它们被洗牌,使用一个循环从洗牌数组中的第一个 6 图像生成图像。
根据 db 表中有多少图像,使用 ORDER BY RAND 可能会产生相当糟糕的性能损失
推荐阅读
- asp.net-mvc - 使用 MVC HtmlHelpers,如何发送带有数据库值的表单以及用户填充的值?
- python - cv2.estimateRigidTransform with fullAffine=False
- postgresql - 聚集索引可以在移动到不同的表空间后存活吗?
- python - 使用 python 读取 xml 元素
- php - Joomla & PHP 7:致命错误:参数 1 传递给 JErrorPage::render()
- android - Firebase 多级子查询 Android
- python - 终端中的python3子进程pip“ImportError:无法导入名称main”
- python - Python3中多处理进程的实例变量未在终止时写入
- python - Matplotlib 刺/轴切割
- powerbi - Maxtrix - 如何将列移动到行