php - 查询显示数据库中的四个随机数据

标签 php mysql

这是我的 PHP 代码,用于显示数据库中的数据。我正在尝试显示表中的随机数据。

<?php
include('connection.php');
$query="SELECT * FROM `banner_ad` ORDER BY RAND() LIMIT 4";
if($query_run=mysql_query($query))
{
    $i=4;
    $rows=mysql_fetch_array($query_run);
    while($rows)
    {
        echo $rows['banner_no'];
        echo $rows['banner_name'];
        echo "<a href=\"".$rows['Banner_website_url']. "\">";
        echo "<img src=\"".$rows['banner_image_url']."\" width=\"100px\" height=\"100px\">";
        echo"</a>";
    }
} else {
    echo'<font color="red"> Query does not run. </font>';
}
?>

但是这段代码的问题是:

它什么也没显示。但是每当我尝试对上面的代码进行一些修改时,例如:

<?php
include('connection.php');
$query="SELECT * FROM `banner_ad` ORDER BY RAND() LIMIT 4";
if($query_run=mysql_query($query))
{
    $i=4;
    $rows=mysql_fetch_array($query_run);
    while($rows && $i<4)
    {
        echo $rows['banner_no'];
        echo $rows['banner_name'];
        echo "<a href=\"".$rows['Banner_website_url']. "\">";
        echo "<img src=\"".$rows['banner_image_url']."\" width=\"100px\" height=\"100px\">";
        echo"</a>";
        $i=$i-1;
    }
} else {
    echo'<font color="red"> Query does not run. </font>';
}
?>

它显示相同的单个输出 4 次。但它必须显示四种不同的输出。所以,请告诉我错误在哪里......以及我该如何显示四个不同的随机输出。

任何帮助将不胜感激 提前致谢

最佳答案

你的第一个查询没问题,但 while 是错误的:

看看你在这里做了什么:

$rows=mysql_fetch_array($query_run);
while($rows)
{
    echo $rows['banner_no'];
    echo $rows['banner_name'];
    echo "<a href=\"".$rows['Banner_website_url']. "\">";
    echo "<img src=\"".$rows['banner_image_url']."\" width=\"100px\" height=\"100px\">";
    echo"</a>";
}

这将以“无限循环”结束,因为 $rows 将始终被设置。 您需要的是:

while($rows=mysql_fetch_array($query_run))

这将导致 myslq_fetch_array 每次检查 while 条件时返回一个新行。如果返回全部 4 行,则 $rows 将为 false 并且循环停止。

为了完整起见: 在第二个示例中,您在同一行上迭代了 4 次,您只是通过调用 myslq_fetch_array 获取了一次。

一个可能的解决方案是在 while 循环内再次获取行:

$i=4;
while ($i>0){
    $rows = mysql_fetch_array(...);
    $i--;
}

但是,您应该更喜欢第一个解决方案,因为这样您就不需要注意结果计数是否与迭代器变量匹配。

sidenode:将其称为 $row,不带 's',因为您总是只返回一行。

关于php - 查询显示数据库中的四个随机数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13643640/

相关文章:

mysql - Rails 选择随机记录

mysql - 删除99G的mysql表没有影响可以吗?

php - 在 CodeIgniter 中,可以根据需要经常使用 `$this->load->model( )` 吗?

php - 除了设置内存限制指令之外,如何解决 Yii 框架或 PHP 中的内存泄漏问题?

php - PUT 和 DELETE 请求 - 共享主机上的 Laravel 应用程序

php - 用php编辑表格的行

mysql - 通过 sequelpro 连接到 Mariadb 到 synology NAS

PHP:为什么 strtotime() 返回 "NOW()"?

php - 如何确保随机选择的两行彼此不同?

mysql - 将缺少的月份添加到查询结果中