当前位置: 首页 > 知识库问答 >
问题:

显示随机mysql记录-PHP

东方玉泽
2023-03-14

我试图显示一个随机记录从我的表,但没有运气,这是我一直以来。这是用PHP编写的

$range_result = mysql_query("SELECT MAX() AS max_id , MIN() AS min_id FROM pages");
$range_row = mysql_fetch_object( $range_result ); 
$random = mt_rand($range_row->min_id , $range_row->max_id);
$result_random = mysql_query( "SELECT * FROM pages WHERE id >= $random LIMIT 0,1");
echo $result_random;

想知道这是否是一个明显的错误吗?我已经连接到数据库了。

JB的

共有3个答案

澹台季萌
2023-03-14

虽然按RAND()排序会好得多,但您的方法仍然有效。您的问题是,您试图回显mysql结果集。在编写代码后,您需要执行以下操作:

$row = mysql_fetch_assoc($result_random);
echo $row['field1'] . " " . $row['field2'];

其中field1和field2是表中的列名称。

袁雅逸
2023-03-14

为什么不直接使用rand():

"SELECT * FROM pages ORDER BY RAND() Limit 1"

但是要回答,如果没有定义,什么是MIN和MAX选择?你是否应该尝试:

"SELECT MAX(`id`) AS max_id , MIN(`id`) AS min_id FROM pages"

我认为你不需要在极限内偏移。所以只要限制1就可以了。

正如注释所述,对于较大的数据集,RAND()的速度可能较慢,但在许多情况下,这不是问题,除非您有异常数量的数据,否则延迟是最小的。阅读frank的链接以查看详细信息。但就我个人而言,我从来没有遇到过兰德()速度的问题。

正如Michael所说,你可能应该在重复你认为的结果集之前先获取结果。

此外,mysql_函数不建议使用。你应该切换到mysqli或者PDO

濮丰
2023-03-14

您应该使用带有mysqli\u multi\u查询的直接SQL执行此操作,以获得性能:

// First query gets the random ID, second gets the associated row
$sql = "SELECT @id:=FLOOR(RAND()*(MAX(id) - MIN(id))) + MIN(id) FROM pages; 
        SELECT * FROM pages WHERE id = @id;"

// Create a mysqli object and execute the multi-query
$mysqli = new mysqli($host, $user, $pass, $db_name);
$mysqli->multi_query($sql);
$result = $mysqli->store_result();

// Grab the first row from the first resultset
if ($row = $result->fetch_assoc()) {
    print_r($row);
}

 类似资料:
  • 本文向大家介绍php随机取mysql记录方法小结,包括了php随机取mysql记录方法小结的使用技巧和注意事项,需要的朋友参考一下 本文实例总结了php随机取mysql记录方法。分享给大家供大家参考。具体分析如下: 在php中要随机取mysql记录我们可以直接使用mysql_query来执行mysql中的select rand函数获取的数据并读出来,这里就来给大家简单介绍一下. 方法一,代码如下:

  • 问题内容: 我不知道我只是在错误的地方还是在什么地方找东西,但是活动记录是否具有检索随机对象的方法? 就像是? 或者…好吧,因为这种方法不存在,所以有一些惊人的“ Rails Way”来做到这一点,我似乎总是很冗长。我也使用mysql。 问题答案: 在Rails 4中,我将扩展: 这样,您可以使用范围:

  • 本文向大家介绍如何从MySQL表显示3个随机值?,包括了如何从MySQL表显示3个随机值?的使用技巧和注意事项,需要的朋友参考一下 使用随机的,而LIMIT 3的值的数量,即在这里3 - 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是查询以显示MySQL表中的3个随机值- 这将产生以下输出-

  • 问题内容: 请考虑下表: 实际上,该表具有600,000条记录,但是如示例表中所示,某些已被删除(因此最高的> 600,000)。 可以是,或。 我需要 随机选择 1200条Tweet,每条400条。这可能与一个查询有关吗? 问题答案: 如果(3)的可能值数量有限,则可以通过一组各自具有和的查询轻松完成此操作: 为了将应用于每个组,必须将组括在中。

  • 本文向大家介绍如何从MySQL数据库中选择随机记录?,包括了如何从MySQL数据库中选择随机记录?的使用技巧和注意事项,需要的朋友参考一下 为此,您可以使用ORDER BY RAND LIMIT。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 这是从MySQL数据库中选择随机记录的查询- 这将产生以下输出-

  • 问题内容: 对于像这样的简单SQL, 如何将行号添加到它们,以使行号变为1,2和3? 更新: 我以为我可以像上面那样简化我的问题,但是事实却更加复杂。所以这是一个完整的版本-我需要MyTable为每个人提供三个随机选择(来自),选择/行数分别为1、2和3,并且人与选择之间没有逻辑上的联系。 上面的SQL的问题是, 显然,应该添加1、2和3的拾​​取/行数 而且不明显的是,上面的SQL将给每个人相同