用于测验的Mysql Randomise行

时间:2014-04-07 07:52:52

标签: php mysql

我有以下表结构:

  

Id问题答案1答案2答案3答案4

Answer1始终是正确答案,因此我希望能够使用PHP以随机顺序显示四个答案。

这怎么可能?

5 个答案:

答案 0 :(得分:3)

将Answers放入数组中,然后使用:shuffle

将shuffle数组放入

答案 1 :(得分:3)

您可以使用这样的php shuffle函数来执行此操作:

首先创建一个答案数组$answers,然后将这个数组shuffle($answers);洗牌

   $query=mysqli_query($db_conn, "SELECT Question, Answer1, Answer2, Answer3, Answer4 FROM questions_table WHERE id=1");

   $array=mysqli_fetch_assoc($query);
   $question=$array['Question'];
   $answers=array($array['Answer1'], $array['Answer2'], $array['Answer3'], $array['Answer4']);
   shuffle($answers);

答案 2 :(得分:2)

我建议将结果放入数组,然后使用以下代码对其进行随机播放(如果您使用预准备语句,并且最好使用它们):

$SQL = $db -> prepare("SELECT * FROM table WHERE id = :id");
$SQL -> execute(array(':id' => $id));

$results = $SQL -> fetch();
$question = $results['question'];

$answers = array($results['answer1'],$results['answer2'],$results['answer3'],$results['answer4'];

shuffle($answers);

答案 3 :(得分:1)

您的表结构将使数据库管理成为未来的一个大问题 使用您当前的设计,通常选择您的问题,然后将答案放在一个数组中,然后shuffle($answers)将随机播放答案。
正确的解决方案将标准化您的数据库,将answersquestions分开。使用question_id将问题与他们的答案联系起来。它将使您的数据库设计非常灵活,管理将变得更加容易。

答案 4 :(得分:0)

您将无法使用MYSQL执行此操作,因为答案都在同一行中。作为ThePixelPony,您应该使用PHP中的shuffle函数