1

选定的 id 将选择行并随机化。但是,它可以随机化相同的元素。例如:“我喜欢弹钢琴。” 我期望的输出被随机分配到例如。'弹奏喜欢我的钢琴'但有时我收到的结果是'我喜欢钢琴钢琴'这句话来自数据库(phpmyadmin)。如何使数据全部出现但不重复?

$strSQL = "SELECT * FROM sentences WHERE id 
ORDER BY RAND() LIMIT 1;";

$x = rand(1,4);
echo "$x";
$y = rand(1,4);
echo "$y";
$z = rand(1,4);
echo "$z";
$c = rand(1,4);
echo "$c";

$rs = mysql_query($strSQL);

// Loop the recordset $rs
while($row = mysql_fetch_array($rs)) {

    // Write the data of the person
    echo "<dt>Sentence:</dt><dd>" . $row["$x"] . " " . $row["$y"] . " " . $row["$z"] . " " . $row["$c"] ."</dd>";
}
4

2 回答 2

1

你可以做:

//create an array with numbers 1-4
$order = array(1,2,3,4);

//shuffle them in random order
shuffle($order);

$rs = mysql_query($strSQL);

// Loop the recordset $rs
while($row = mysql_fetch_array($rs)) {
    // Write the data of the person
    //Display all the array values from 0-3 (array index starts from 0)
    echo "<dt>Sentence:</dt><dd>" . $row[$order[0]] . " " . $row[$order[1]] . " " . $row[$order[2]] . " " . $row[$order[3]] ."</dd>";
}

笔记:

请不要mysql_*在新代码中使用函数。它们不再被维护并被正式弃用。看到红框了吗?改为了解准备好的语句,并使用PDOMySQLi -本文将帮助您决定使用哪个。如果您选择 PDO,这里有一个很好的教程

于 2014-05-27T07:03:57.553 回答
1

尝试使用该shuffle()功能。

$strSQL = "SELECT * FROM sentences WHERE id 
ORDER BY RAND() LIMIT 1;";

// Loop the recordset $rs
while($row = mysql_fetch_array($rs)) {

    shuffle($row);

    // Write the data of the person
    echo "<dt>Sentence:</dt><dd>" . implode(' ', $row) . "</dd>";
}

不相关:mysql_*自 php 5.5 起已弃用,将来将被删除。请改用 mysqli 或 PDO。

于 2014-05-27T07:04:12.177 回答