我需要从我的 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/