Php 语句顺序随机化

Php 语句顺序随机化,php,mysql,while-loop,Php,Mysql,While Loop,我一直在摆弄搜索引擎,我试图让while语句运行并以随机顺序响应结果。这是我现在的代码 if ($numrows > 0) { while ($row = mysql_fetch_assoc($query)) { $id = $row['id']; $title = $row['title']; $description = $row['description']; $keywords = $row['keywords']; $link = $r

我一直在摆弄搜索引擎,我试图让while语句运行并以随机顺序响应结果。这是我现在的代码

if ($numrows > 0) {

while ($row = mysql_fetch_assoc($query)) {

    $id = $row['id'];
    $title = $row['title'];
    $description = $row['description'];
    $keywords = $row['keywords'];
    $link = $row['link'];

    echo "<div id='resultbox'><h3><a href='$link'>$title</a></h3><br><p>$description</p></div>";



}
if($numrows>0){
while($row=mysql\u fetch\u assoc($query)){
$id=$row['id'];
$title=$row['title'];
$description=$row['description'];
$keywords=$row['keywords'];
$link=$row['link'];
回声“
$description

”; }
理论上,我需要while语句完全随机地运行和显示结果

有没有办法做到这一点


谢谢!

您可以在查询中执行
按兰德排序()
,对结果进行随机排序。

我认为您不能在同一while语句中执行此操作。我认为您必须将查询结果放入列表,然后使用其大小,您可以使用随机数生成器,并使用其索引从中检索元素

您还可以洗牌列表,然后按顺序从中检索

  • 使用Foreach而不是while
  • 先数一数结果
  • 生成一个包含整数的数组,直到结果计数为止
  • 为此,使用本机php函数随机化该数组
  • 在执行foreach($k=>$v kind)时,使用数组中已加扰的下一个数字,然后将其取消设置

  • 除了使用
    SELECT*FROM search WHERE row1='1'ORDER BY rand()

    你可以:

    while ($row = mysql_fetch_assoc($query)) {
        $data[] = $row;
    }
    shuffle($data);
    
    foreach($row as $k=>$v) {
        $id = $row['id'];
        $title = $row['title'];
        $description = $row['description'];
        $keywords = $row['keywords'];
        $link = $row['link'];
    
        echo "<div id='resultbox'><h3><a href='$link'>$title</a></h3><br><p>$description</p</div>";
    }
    
    while($row=mysql\u fetch\u assoc($query)){
    $data[]=$row;
    }
    洗牌(数据);
    foreach($k=>v的行){
    $id=$row['id'];
    $title=$row['title'];
    $description=$row['description'];
    $keywords=$row['keywords'];
    $link=$row['link'];
    
    echo“
    $description为什么不使用Order by random属性对mysql结果进行随机排序?它按照数据库的顺序按关键字获取结果,我不能每次运行脚本时都对数据库进行重新洗牌。afuzzyllama,很好地删除了您的注释。也许您应该查找
    Order by RAND()
    实际上是这样做的,然后你就可以忽略它。这是我的查询$query=“SELECT*FROM search WHERE”我该如何构造它?
    $query=“SELECT*FROM search WHERE something=something order by rand()”;
    但我同意Eric的观点。但是如果你必须在没有mysql访问的情况下进行查询,这里有一种方法。