I am building a quiz app, in which the student can login and can select the option of give exam. I want to show multiple choice questions to students randomly.

I stored all the questions in one table. For example, I stored 20 questions for a chemistry exam. Now I want to show 10 random questions to students. I don't want to select questions randomly every time when user refresh the page. Currently I am doing:

SELECT * from table-name order by rand() limit 5;

The problem is this query selects random rows every time the user refreshes the page. This is my code:

$query="SELECT * from question_bank order by rand() limit 10";
$result= mysqli_query($connection,$query);


<form action="result.php" name="form1" method="post" id="quiz">
while ($read_all_data = mysqli_fetch_assoc($result))

 echo $read_all_data['question']."</br>";
 echo "A:<input type ='radio' value ='a'  name='$id' >".$read_all_data['a']."</br>";
 echo "B:<input type ='radio' value ='b'  name='$id' >".$read_all_data['b']."</br>";
 echo "C:<input type ='radio' value ='c'  name='$id' >".$read_all_data['c']."</br>";
 echo "D:<input type ='radio' value ='d'  name='$id' >".$read_all_data['d']."</br>";

  • 1
    How long do you want to preserve the order, minutes, hours, days, years?
    – Erik
    Commented Oct 8, 2015 at 19:19
  • 2
    Can you just have X versions of the exam where the questions are pre-scrambled, and give each person one of pre-scrambled versions? This is basically what they did/do with paper multiple choice tests to prevent cheating.
    – Erik
    Commented Oct 8, 2015 at 19:49
  • 1
    Please ensure you update your question using the edit button in response to comment requests for clarification. Keeping all the information needed to answer the question in one place helps people provide good answers.
    – Paul White
    Commented Oct 9, 2015 at 14:48

2 Answers 2


You'll want to hold an actual random number for each user then you can call


to generate your static random generator start point

the $usersrandomnumber acts as a starting seed

see the mysql documentation here: https://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_rand

it will involve you storing the user's seed in a table somewhere, or cookie /local/server storage but will get you what you're after


Likely you'll want to hold the answers, too. That would be a suitable place to persist the ordering.

Table Answer

Once you select questions insert them to this table. Each time you show a student's quiz check this table before creating a list.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.