在 MySQL 中随机显示一列数据

Display one-column data randomly in MySQL

我有一个 table 有很多记录。通过拖放输入中的文本,用户可以确定哪个文本适用于哪个输入或图像。

通常所有的衰退都是按顺序显示的,并且很清楚哪个答案对应哪个图像。 我希望列响应数据随机放置在每个图像的前面。

注意,我不是希望每一行都随机显示,而是希望某一列的数据随机显示。

id answer image
1 test1 test1.jpg
2 test2 test2.jpg

我想让Test1 Title显示在test2图片前面,Test2 Title显示在test1图片前面。

我使用了下面的代码但是没有改变:

$gg1 = "SELECT * FROM groupanswer WHERE id='$nowid' ";
$gg2=mysqli_query($conn,$gg1);
while($gg3=mysqli_fetch_assoc($gg2)){
    $iii=$gg3['answer'];
    $aa = array($iii);
    $key = array_rand($aa);
}

我附上照片:

您可以简单地使用两个数组。一个将 id 作为索引,并将 answer 作为值。该数组将保持原始顺序。另一个数组也将 id 作为索引,但 image 作为值。它将被随机重新排序。

$answers = [];
$images = [];
$query = "SELECT * FROM groupanswer WHERE id='" . (int) $nowid . "'";
$result = mysqli_query($conn, $query);
while ($row = mysqli_fetch_assoc($result)) {
    $answers[$row['id']] = $row['answer'];
    $images[$row['id']] = $row['image'];
}

$randomOrder = array_keys
$images = shuffle_assoc($images); //Randomize order

//Demo echoing
foreach ($answers as $id => $answer) {
    echo $answer . ' - ' . $images[$id] . '<br />';
}

//Function to shuffle preserving indexes
function shuffle_assoc($list) { 
    $keys = array_keys($list); 
    shuffle($keys); 
    $random = array(); 
    foreach ($keys as $key) { 
        $random[$key] = $list[$key]; 
    }

    return $random;
}