You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决MySQL随机查询后页面重复显示同一艺术家YouTube视频的问题

解决随机显示5-10个不同艺术家YouTube视频的问题

Hey Andrew, 我看了你的代码,问题其实很直白——你只从数据库查询结果里取了第一行数据,然后反复输出同一个视频ID,难怪所有视频都来自同一个艺术家!

问题出在哪?

  1. 你的查询语句SELECT Youtube FROM artist ORDER BY RAND() LIMIT 5逻辑没问题,但mysql_fetch_array($result)只获取了查询结果的第一行,所以$Youtube永远只是第一个随机艺术家的视频ID。
  2. 输出部分硬写了5个iframe,全部复用同一个$Youtube值,自然会重复显示同一视频。

修正方案

我们需要做两件事:

  • 把查询的数量改成随机5-10个
  • 循环遍历所有查询到的结果,动态生成对应数量的iframe

修正后的完整代码

PHP部分(获取随机视频ID)

// 生成5-10之间的随机数量
$randomCount = rand(5, 10);
// 查询对应数量的随机艺术家视频ID
$result = mysql_query("SELECT Youtube FROM artist ORDER BY RAND() LIMIT $randomCount");

if (!$result) {
    die("Error: Data not found..");
}

// 把所有视频ID存入数组,方便后续输出
$youtubeVideoIds = [];
while ($row = mysql_fetch_array($result)) {
    $youtubeVideoIds[] = $row['Youtube'];
}

HTML输出部分(动态生成iframe)

<div class="ws_images">
    <ul>
        <?php foreach ($youtubeVideoIds as $videoId): ?>
            <li>
                <iframe width="300" height="300" 
                        src="https://www.youtube.com/embed/<?php echo $videoId ?>" 
                        frameborder="0" 
                        allow="autoplay; encrypted-media" 
                        allowfullscreen>
                </iframe>
            </li>
        <?php endforeach; ?>
    </ul>
</div>

额外提醒

⚠️ mysql_*系列函数已经被PHP官方废弃,存在安全隐患,建议尽快迁移到mysqli_*或PDO扩展。比如用mysqli的示例代码:

// 假设你已经用mysqli建立了数据库连接
$randomCount = rand(5, 10);
$query = "SELECT Youtube FROM artist ORDER BY RAND() LIMIT ?";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("i", $randomCount);
$stmt->execute();
$result = $stmt->get_result();

$youtubeVideoIds = [];
while ($row = $result->fetch_assoc()) {
    $youtubeVideoIds[] = $row['Youtube'];
}

另外要确保你的artist表中Youtube字段存储的是纯视频ID(比如dQw4w9WgXcQ),而不是完整的YouTube链接,这样嵌入才能正常工作。

内容的提问来源于stack exchange,提问作者Andrew Cole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:12:50