我寻找这个已经有一段时间了,但是没有成功。
我正在尝试实现一个推荐栏,例如在youtube中,当你看到一个视频时,它会在右边显示列表或推荐的视频。
此时此刻,我正在使用这个方法:
$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,等等?
谢谢
发布于 2012-10-24 08:59:32
您可以使用php rand()函数创建5个数字,并将它们保存在一个数组中:
http://php.net/manual/en/function.rand.php
<?php
$rand_array = array();
for($i=1;$i<5;$i++) {
$rand_array[$i] = rand(0,500);
}
?>然后使用foreach循环为每个int创建一个查询并处理您的数据。
<?php
foreach ($rand_array as $integer) {
$q = "SELECT * from $tablename WHERE id='$integer';";
}
?>这有帮助吗?
发布于 2012-10-24 08:58:34
不完全确定这是否能满足您的需求,但请尝试:
$result_rand = mysql_query("SELECT * FROM " . $tablename . " ORDER BY RAND() LIMIT 9");
发布于 2012-10-24 09:02:44
首先,您应该使用mysqli_函数而不是mysql_,因为latter is deprecated。第二,使用order by rand()获得随机行:
$rand_result = mysqli_query( "SELECT * FROM $tablename ORDER BY RAND() LIMIT 9;" );https://stackoverflow.com/questions/13041488
复制相似问题