mysql - 每次获取随机/不同的记录

标签 mysql random

我有 3 个缩略图,每次用户刷新页面时我都想旋转它们。因此希望每次显示不同的缩略图。我将图像名称存储在数据库中。我正在使用此 SQL 查询来获取“按 rand() limit 1 从表名顺序中选择缩略图”。它完美地获取了一张缩略图。

问题是有时会出现相同的图像。例如,我第一次刷新页面缩略图 1.jpg 显示,但第二次又出现 1.jpg。

所以我想要的是每次刷新页面时都有不同的缩略图。

任何人都可以给我一些建议来实现这一目标吗?

最佳答案

随机选择是不可能的,因为相同的图像可能会再次出现。

为了达到您想要的效果,您需要使用 cookie 来存储上次显示的图像名称,并且在下次请求时不显示该图像。

正如您在评论中确认的那样,您不想显示最后显示的缩略图。在这种情况下,您可以使用 sessions 执行此操作:

// get last shown from session if any
$last_shown = '';
if(isset($_SESSION['last_shown_thumb']))
    $last_shown = $_SESSION['last_shown_thumb'];

// select a thumbnail randomly which is not the one last shown
$query = "SELECT thumbnail FROM tablename WHERE thumbnail <> '" . $last_shown . "' order by rand() limit 1";
$res = mysql_query($query);
$row = mysql_fetch_row($res);
$curr_thumb = $row[0];

// set the current to last shown in session
$_SESSION['last_shown_thumb'] = $curr_thumb;

关于mysql - 每次获取随机/不同的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7581087/

相关文章:

mysql - phpMyAdmin 中定义的 "Internal Relations"是什么?

php - 通过 UI 输入在表中添加新列

c++ - "min to max"均匀实数分布会产生 Inf、-Inf 还是 NaN?

c - 用C语言编程的整数数组中的唯一随机数

sql - 您可以在 CASE 语句中使用随机数吗 (SQL Server 2016)

php - 更好的随机生成 PHP

python - 可以使用负数作为随机数生成的种子吗?

mysql - SQL查询分组按日期洗牌

php - 编码数据库和服务器

mysql - 在 MySQL 中用连接替换子查询