【问题标题】:Trying to get multiple randomised result returned from mysql database试图从mysql数据库返回多个随机结果
【发布时间】:2018-05-24 15:26:54
【问题描述】:

嗨,我花了一天的大部分时间来解决这个问题,希望有人能提供帮助。我需要在页面上生成随机显示 5-10 个嵌入式 youtube 视频而不重复。当我刷新它时,我可以显示视频(但所有相同的艺术家)显示一组新的视频,但再次显示所有相同的艺术家。我知道答案可能很简单,但我就是看不到。

任何帮助或指点将不胜感激。

初始php代码为:

$result = mysql_query("SELECT Youtube FROM artist ORDER BY RAND() LIMIT 5");
$test = mysql_fetch_array($result);
if (!$result) 
{
    die("Error: Data not found..");
}
$Youtube=$test['Youtube'];                  

输出为:

<div class="ws_images"><ul>
  <iframe width="300" height="300" src="https://www.youtube.com/embed/<?       php echo $Youtube ?>" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
  <iframe width="300" height="300" src="https://www.youtube.com/embed/<?php echo $Youtube ?>" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
  <iframe width="300" height="300" src="https://www.youtube.com/embed/<?php echo $Youtube ?>" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
  <iframe width="300" height="300" src="https://www.youtube.com/embed/<?php echo $Youtube ?>" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
  <iframe width="300" height="300" src="https://www.youtube.com/embed/<?php echo $Youtube ?>" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
</ul></div>

【问题讨论】:

  • 这是初始代码:
  • 所以他们是或不是不同的视频?
  • 因此,您需要将 foreach 函数与您的 $test 变量一起使用。喜欢foreach ($test as $res) {echo $res['Youtube'];})
  • 艺术家表中是否有不止一位艺术家?
  • var_dump($test) 和 var_dump($Youtube);你可能会意识到一些事情。

标签: php mysql random


【解决方案1】:

这应该可行。我更改了您的代码,并将其减少了一个 while 循环。

<?php 
$mysqli = new mysqli("127.0.0.1", "root", "password", "database name");
$mysqli->set_charset('utf8mb4'); //optional for when you use utf8mb4 charset (recommended) 


$getYouTubeLinks = "SELECT DISTINCT Youtube FROM artist ORDER BY RAND() LIMIT 5";
$getRows = $mysqli->query($getYouTubeLinks);


if($getRows->num_rows > 0) {
  while($row = $getRows->fetch_assoc()) {
    $iframes .= '<iframe width="300" height="300" src="https://www.youtube.com/embed/'.$row['Youtube'].'" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe><br>';
    }
  }

  ?>

  <div class="ws_images"><ul>
    <?=$iframes;?>
  </ul></div>

【讨论】:

  • 您好,感谢您的回复,不幸的是,您的代码已经到位,我得到:注意:未定义变量:mysqli 致命错误:在 null 上调用成员函数 query() 它所指的行是这段代码。 $getRows = $mysqli->query($getYouTubeLinks);非常感谢您的帮助
  • 嘿,你能告诉我你是如何在没有凭据的情况下连接到数据库的吗?因为$mysqli 变量可能未在您的环境中设置您也应该切换到mysqli。 i 代表改进,它更安全。
  • connect_error) { die("Connection failed: " . $conn->connect_error); } ?>
  • 我更新了我的答案,现在用你自己的凭据试试吧。
【解决方案2】:

$result = mysql_query("SELECT DISTINCT Youtube FROM Artist ORDER BY RAND() LIMIT 5");

Mysql Documentation.

【讨论】:

    猜你喜欢
    • 2011-09-13
    • 1970-01-01
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    相关资源
    最近更新 更多