Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何通过rand()使订单对页面无效?_Php_Mysql_Sql - Fatal编程技术网

Php 如何通过rand()使订单对页面无效?

Php 如何通过rand()使订单对页面无效?,php,mysql,sql,Php,Mysql,Sql,我有一个代码,它可以从表combbined\u attack中随机打印行,并显示每页的10个结果 if (!isset($_GET['page'])) { $_GET['page'] = 10; } if(empty($_GET['page'])) { $PageNumber = 1; } else { $PageNumber = abs($_GET['page']); } $First_l

我有一个代码,它可以从表
combbined\u attack
中随机打印行,并显示每页的10个结果

    if (!isset($_GET['page']))  {
        $_GET['page'] = 10;
    }
    if(empty($_GET['page']))    {
        $PageNumber = 1;
    } else  {
        $PageNumber = abs($_GET['page']);
    }
    $First_limit = $PerPage * $PageNumber - $PerPage;
    $Limit = $First_limit;

$get_av = $db->query("SELECT * FROM `combined_attack` WHERE (army_1=0 || army_2=0) && start=0 ORDER BY RAND() LIMIT $Limit,$PerPage");
一切都很好,但当我在页面之间移动时,查询会再次随机化结果,使页面变得不相关


有什么建议吗?谢谢大家!

不要那样做。不,说真的。你想达到什么目的?大多数情况下,您需要一个特定的顺序-这是使结果稳定的唯一方法。否则,您必须拥有某种类型的查询运行id,并将其上载到db,以提供稳定的顺序。为什么你认为你想要一个“随机”的顺序?我需要它是随机的,但也有页面。我不需要每次都是相同的排序。我想让它随机只有当有人在第1页。但是,如果他把页面移到了最右边,就保持同样的排序。我是说,你几乎永远不会想要这样,因为这会导致非常奇怪的行为。例如,如果您试图找出谁“赢得”了一场战斗,结果可能取决于语句运行-如果双方同时请求信息会发生什么?您或者需要以某种方式缓存排序(通过在db端存储某些内容,或者在php中存储所有行),或者选择一个稳定的排序。请注意,
orderbyrand()
不能使用索引,因此速度会很慢。谢谢,我会记住这一点。但我还是想找出解决的办法。我正在尝试打印“战斗室”,它现在只影响用户看到的列表中房间的位置。@OfirH您可以获取整个结果集并将其存储/缓存。因此,不要将分页开始/限制发送到sql,而是在循环中执行。这并不是通常推荐的(获取所有结果),但我不确定如何才能通过order by rand获得您想要的。。