php - 如何通过ID查看数据是否已经输出到网站,避免重复

标签 php mysql loops while-loop

我需要从我的数据库中输出问题,以便用户可以在注册过程中回答这些问题。每个问题都有 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;
        ?>

最佳答案

  1. 您没有任何 <form>在您的问题中,我想您知道自己在做什么,并且知道如何处理自 <input> 以来发布的数据。和 <select>元素没有任何name属性。

  2. 正如 Strawberry 所建议的,建议使用准备好的语句。

我已经稍微更改了您的代码以满足您的需求,在您的代码中,您必须使用 <select>标记出 while循环并得到 <option>循环中的标签。

所以代码会是这样的:

<?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;
?>

关于php - 如何通过ID查看数据是否已经输出到网站,避免重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50476969/

相关文章:

php - 当列具有相同名称时如何左连接

php - 如何在 PHP/HTML 中将特定的类名传递给特定的标签

php - 大写 FROM 导致错误 1064

php - 通知 : Undefined index: myfile

mysql - 基于此模式插入数据的正确结构是什么?

javascript - JS for 循环填充数组

c++ - MFC 树控件通知被触发两次

mysql - 在 PostgreSQL 或 MySQL 中是否存在反向 "AUTO_INCREMENT"的现存实现?

PHP:将MySQL结果排序为多维数组

python - 在 For 循环中比较列表中的值; Python