【问题标题】:quiz: can not get the correct answer with rand() [duplicate]测验:使用 rand() 无法得到正确答案 [重复]
【发布时间】:2019-11-19 09:38:21
【问题描述】:

我从 technopoints 获得了这段代码,我想从数据库中获得一个随机问题,但是当我输入 $fetchqry = "SELECT * FROM quiz ORDER BY rand()"; 时我无法解决这个问题,因为 rand(),它没有得到我认为的正确结果。我一直在尝试解决这个问题,但它不起作用,我怎样才能为每个问题添加一个递增的数字?

                                if (isset($_POST['click']) || isset($_GET['start'])) {
                                @$_SESSION['clicks'] += 1 ;
                                $c = $_SESSION['clicks'];
                                if(isset($_POST['userans'])) { $userselected = $_POST['userans']; 

                                $fetchqry2 = "UPDATE 'quiz' SET 'userans'='$userselected' WHERE 'id'=$c-1"; 
                                $result2 = mysqli_query($db,$fetchqry2);
                                }


                                } else {
                                  $_SESSION['clicks'] = 0;
                                }

                                //echo($_SESSION['clicks']);
                                ?>


<div class="bump"><br><form><?php if($_SESSION['clicks']==0){ ?> <button class="button" name="start" float="left"><span>START QUIZ</span></button> <?php } ?></form></div>
<form action="" method="post">          
<table>
  <?php if(isset($c)) {   $fetchqry = "SELECT * FROM 'quiz' ORDER BY rand()";
        $result=mysqli_query($db,$fetchqry);
        $num=mysqli_num_rows($result);
        $row = mysqli_fetch_array($result,MYSQLI_ASSOC); }
      ?>
<tr><td><h3><br><?php echo  @$row['que'];?></h3></td></tr> <?php if($_SESSION['clicks'] && $_SESSION['clicks']){ ?>
  <tr><td><input required type="radio" name="userans" value="<?php echo $row['option 1'];?>">&nbsp;<?php echo $row['option 1']; ?><br>
  <tr><td><input required type="radio" name="userans" value="<?php echo $row['option 2'];?>">&nbsp;<?php echo $row['option 2'];?></td></tr>
  <tr><td><input required type="radio" name="userans" value="<?php echo $row['option 3'];?>">&nbsp;<?php echo $row['option 3']; ?></td></tr>
  <tr><td><input required type="radio" name="userans" value="<?php echo $row['option 4'];?>">&nbsp;<?php echo $row['option 4']; ?><br><br><br></td></tr>
  <tr><td><button class="button3" name="click" >Next</button></td></tr> <?php }  
                                  ?> 
  <form>
 <?php if($_SESSION['clicks']){ 
  $qry3 = "SELECT 'ans', 'userans' FROM 'quiz';";
  $result3 = mysqli_query($db,$qry3);
  $storeArray = Array();
  while ($row3 = mysqli_fetch_array($result3, MYSQLI_ASSOC)) {
     if($row3['ans']==$row3['userans']){
     @$_SESSION['score'] += 1 ;
   }
}

 ?>

<h2>Result</h2>
 <span>No. of Correct Answer:&nbsp;<?php echo $no = @$_SESSION['score']; 
 session_unset(); ?></span><br>
 <span>Your Score:&nbsp<?php echo $no*2; ?></span>
<?php } ?>```

【问题讨论】:

  • 该代码没有任何 ORDER BY RAND() 查询,如果没有提供真正的代码将无济于事。
  • 因为这段代码运行良好但是当我改变这部分时'fetchqry = "SELECT * FROM 'quiz'";并添加 ORDER BY rand() 这是它出错的地方它不再得到正确的答案编辑:我现在改变它只是为了清楚

标签: php html mysql session


【解决方案1】:

我觉得你的sql查询应该是这样的:

$fetchqry = "SELECT * FROM quiz ORDER BY rand() LIMIT 1";

我不太确定您是否必须在测验中显示所有行还是只显示一个,如果是这样,请尝试使用 LIMIT 1

【讨论】:

  • 我之前尝试过,但它没有工作它仍然没有得到正确的答案我猜 rand() 弄乱了正确答案的顺序
  • 我也注意到你没有关闭一些表单标签,你能检查你的代码,看看这是否是问题所在?还要确保你有 session_start() 函数。
  • 我会再次检查它,但是当我添加 rand() 并且是的我有 session_start 并在我的 sql 中连接它时它真的工作正常
猜你喜欢
  • 2016-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-26
  • 1970-01-01
  • 2019-05-02
  • 2015-09-06
相关资源
最近更新 更多