Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何通过ID检查数据是否已输出到网站,以避免重复_Php_Mysql_Loops_While Loop - Fatal编程技术网

Php 如何通过ID检查数据是否已输出到网站,以避免重复

Php 如何通过ID检查数据是否已输出到网站,以避免重复,php,mysql,loops,while-loop,Php,Mysql,Loops,While Loop,我需要从我的数据库中输出问题,以便用户可以在注册过程中回答这些问题。每个问题都有2个相关选项,每个问题现在被输出到站点两次,每个问题下面有一个选项。我需要每个问题出现一次,相关的选择出现在下面。请看下面我的代码 <?php $sql = "SELECT Question_ID, Question FROM Questions;"; $result = mysqli_query($conn, $sql); $resultCheck = mys

我需要从我的数据库中输出问题,以便用户可以在注册过程中回答这些问题。每个问题都有2个相关选项,每个问题现在被输出到站点两次,每个问题下面有一个选项。我需要每个问题出现一次,相关的选择出现在下面。请看下面我的代码

   <?php
       $sql = "SELECT Question_ID, Question FROM Questions;";

       $result = mysqli_query($conn, $sql);
       $resultCheck = mysqli_num_rows($result);

       if($resultCheck > 0):
          while($row = mysqli_fetch_assoc($result)):
             $questionid = (int)$row['Question_ID'];
            ?>
            <label><?php echo $row['Question'];?></label><input type="hidden" value="<?php echo $row['Question_ID'];?>"/>
   <?php
             $query = "SELECT Choice_ID, Choice FROM Choices WHERE Question_ID = '$questionid';";
             $results = mysqli_query($conn, $query);
             $resultsCheck = mysqli_num_rows($results);
               if($resultsCheck > 0):
                  while($rows = mysqli_fetch_assoc($results)):
        ?>
         <br><select id="choice">
            <option value="<?php echo $rows['Choice_ID']; ?>"><?php echo $rows['Choice']; ?></option>
        </select><br/>
        <?php
        endwhile;
        endif;
        endwhile;
        endif;
        ?>


  • 您的问题中没有任何
    ,我想您知道自己在做什么,并且知道如何处理发布的数据,因为您的
    元素没有任何
    名称
    属性

  • 正如草莓所建议的,建议使用事先准备好的语句

  • 为了满足您的需要,我对您的代码做了一些更改,在您的代码中,您必须在
    循环时将
    标记从
    中取出,并在循环中保留
    标记

    因此,代码如下所示:

    <?php
    $sql = "SELECT Question_ID, Question FROM Questions;";
    
    $result = mysqli_query($conn, $sql);
    $resultCheck = mysqli_num_rows($result);
    
    if($resultCheck > 0):
        while($row = mysqli_fetch_assoc($result)):
            $questionid = (int)$row['Question_ID'];
            echo '<label>'.$row['Question'].'</label><input type="hidden" value="'.$row['Question_ID'].'">';
    
            $query = "SELECT Choice_ID, Choice FROM Choices WHERE Question_ID = '$questionid';";
            $results = mysqli_query($conn, $query);
            $resultsCheck = mysqli_num_rows($results);
            if($resultsCheck > 0):
                $string = '<br><select id="choice">';
                while($rows = mysqli_fetch_assoc($results)):
                    $string .= '<option value="'.$rows['Choice_ID'].'">'.$rows['Choice'].'</option>';
                endwhile;
                $string .= '</select><br>';
                echo $string;
            endif;
        endwhile;
    endif;
    ?>
    

    像这样组织代码(为了可读性而简化)

    while($question=mysqli\u fetch\u assoc($result))
    {
    echo“…;//打印问题
    回声“”
    while($answer=mysqli\u fetch\u assoc($results))
    {
    回声“.$answer.”;
    }
    回声';
    }
    
    问题打印在内部循环中,因此可能会显示多次。将q.的打印移到内部循环之前loop@EriksKlotins我已经编辑了上面的代码。显示了一个问题,但每个选项现在都显示在单独的选择标记中。请参阅关于准备好的语句和联接!
    while($question = mysqli_fetch_assoc($result))
    {
       echo "<label for='q'>...; // print question
       echo "<select name='answer'>"  
       while ($answer = mysqli_fetch_assoc($results))
       {
           echo '<option>'.$answer.</option>';
       }
       echo '</select>';
    }