php - MySql 中的快速随机行

标签 php mysql database

我需要从我的 MySql 数据库中生成一个随机行,我在这里找到了示例: http://akinas.com/pages/en/blog/mysql_random_row/

我想使用如下所示的解决方案 3:

$offset_result = mysql_query( " SELECT FLOOR(RAND() * COUNT(*)) AS `offset` FROM `users` ");
$offset_row = mysql_fetch_object( $offset_result ); 
$offset = $offset_row->offset;
$result = mysql_query( " SELECT * FROM `users` LIMIT $offset, 1 " );

我的代码现在看起来像这样:

$offset_result = mysql_query( " SELECT FLOOR(RAND() * COUNT(*)) AS `offset` FROM `users` ");
$offset_row = mysql_fetch_object( $offset_result ); 
$offset = $offset_row->offset;
$result = mysql_query( "SELECT * FROM `users` WHERE profile_image='2' LIMIT $offset, 1 " );
$random_date = mysql_fetch_array($result);

echo $random_date['user_name']; //display username of random user

但是当我刷新页面时:大约 10 次中有 7 次没有出现。根本没有用户名,我也试图打印出用户的 ID,但它也是空的。 刷新时似乎根本没有从数据库中获取任何内容,有时它从数据库中获取数据。知道为什么会发生这种情况吗?

最佳答案

在这种特殊情况下,问题在于您正在使用两个不同 查询;第一个查询是:

SELECT FLOOR(RAND() * COUNT(*)) AS `offset` FROM `users`

而第二个包含一个条件:

SELECT * FROM `users` WHERE profile_image='2' LIMIT $offset, 1
                      ^^^^^^^^^^^^^^^^^^^^^^^

两个查询应该对相同的结果集进行操作。

关于php - MySql 中的快速随机行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24330510/

相关文章:

php 服务器到服务器的帖子?

php - 我正在尝试通过 PHP 将文本字符串转换为 mySQL 数据库的日期

php - Laravel 5.2 比较字符串日期?

php - "PHP combined with MySQL are cross-platform (you can develop in Windows and serve on a Unix platform)"到底是什么意思?

php - 正则表达式只允许小写字母

php - 如何防止数据库在缓存过期时被应用程序DDOS?

php - 提交表单后如何使下拉菜单值仍处于选中状态?

c# - 从 MySQL 数据库获取图像 - C#

mysql - Docker - 对另一个应用程序使用相同的网络和数据库?

mysql - 将 Mongo 或 MySQL DB 从开发环境推送到生产环境 - 忽略存在的行