Php 如何通过ID检查数据是否已输出到网站,以避免重复
我需要从我的数据库中输出问题,以便用户可以在注册过程中回答这些问题。每个问题都有2个相关选项,每个问题现在被输出到站点两次,每个问题下面有一个选项。我需要每个问题出现一次,相关的选择出现在下面。请看下面我的代码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
<?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>';
}