首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql + php:随机选择多个结果

问mysql + php:随机选择多个结果
EN

Stack Overflow用户
提问于 2012-10-24 08:49:02
回答 4查看 234关注 0票数 0

我寻找这个已经有一段时间了,但是没有成功。

我正在尝试实现一个推荐栏,例如在youtube中,当你看到一个视频时,它会在右边显示列表或推荐的视频。

此时此刻,我正在使用这个方法:

代码语言:javascript
复制
$offset_result = mysql_query( " SELECT FLOOR(RAND() * COUNT(*)) AS `offset` FROM `$tablename` ");
$offset_row = mysql_fetch_object($offset_result ); 
$offset = $offset_row->offset;
$result_rand = mysql_query( " SELECT * FROM `$tablename` LIMIT $offset, 9 " );

这很好用,但有时不会显示任何结果,而且问题也不是完全随机的,因为它显示例如第一个ID为200,所以下一个结果将是id 201,然后是202,依此类推。

我想知道是否有一种方法来显示这9个随机结果,例如1ºresult id 500,2ºresult id 10,3ºresult id 788,等等?

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-10-24 08:59:32

您可以使用php rand()函数创建5个数字,并将它们保存在一个数组中:

http://php.net/manual/en/function.rand.php

代码语言:javascript
复制
<?php
$rand_array = array();
for($i=1;$i<5;$i++) {
    $rand_array[$i] = rand(0,500);
}
?>

然后使用foreach循环为每个int创建一个查询并处理您的数据。

代码语言:javascript
复制
<?php
foreach ($rand_array as $integer) {
     $q = "SELECT * from $tablename WHERE id='$integer';";
}
?>

这有帮助吗?

票数 0
EN

Stack Overflow用户

发布于 2012-10-24 08:58:34

不完全确定这是否能满足您的需求,但请尝试:

$result_rand = mysql_query("SELECT * FROM " . $tablename . " ORDER BY RAND() LIMIT 9");

票数 1
EN

Stack Overflow用户

发布于 2012-10-24 09:02:44

首先,您应该使用mysqli_函数而不是mysql_,因为latter is deprecated。第二,使用order by rand()获得随机行:

代码语言:javascript
复制
$rand_result = mysqli_query( "SELECT * FROM $tablename ORDER BY RAND() LIMIT 9;" );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13041488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档