我有一个数据库,在这个数据库中我有一个名为question的表,然后是另一个名为q_options的表。我的代码为每个问题提出了问题和选项。选项始终是无线电BTN,我将questionId分配给无线电BTN的名称。
<input type = "radio" name = "<?php echo $optionsQID; ?>" value = "<?php echo $optionsID; ?>">
那部分就是我无法访问我的数据库的部分。当我打印我的POST时,我可以看到已分配具有指定号码的字段但我在提交后无法从$qAnswer = $_POST[$optionsQID];
检索到它。
我尝试过引号而没有引号,我也尝试在无线电BTN名称中添加和标识符以及变量,但我仍然没有得到该字段的值。
我也移动了整个
if (isset($_POST["answerQuestion"])){
$question = $_POST["questionID"];
$qAnswer = $_POST[$optionsQID];
$sql = "INSERT INTO answers (id, q_id, answer)
VALUES (NULL, '$question', '$qAnswer')";
echo "Thanks for your input";
if(!mysqli_query($link, $sql)) {
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
}
在第二个while循环中,这会发送$ qAnswer的正确值,但也会为每个问题创建一个记录。
这是我的代码
<?php
if (isset($_POST["answerQuestion"])){
$question = $_POST["questionID"];
$qAnswer = $_POST[$optionsQID];
$sql = "INSERT INTO answers (id, q_id, answer)
VALUES (NULL, '$question', '$qAnswer')";
echo "Thanks for your input";
if(!mysqli_query($link, $sql)) {
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
}
?>
<?php $questionsResult = $link->query("SELECT * FROM questions");
while($row = mysqli_fetch_array($questionsResult)){
$questionID = $row['id'];
$question = $row['question'];
?>
<div style = "margin: 20px 10%; padding: 50px 10%; width: 60%; border: 1px solid #444444;">
<form role="form" action = "" method="post" id="answerForm" name = "answerForm">
<h3><?php echo $question; ?></h3>
<input type = "hidden" name = "questionID" value = "<?php echo $questionID; ?>">
<?php
$optionsResult = $link->query("SELECT * FROM q_options WHERE q_id = $questionID");
while($optionsRow = mysqli_fetch_array($optionsResult)){
$optionsID = $optionsRow['id'];
$optionsQID = $optionsRow['q_id'];
$option = $optionsRow['options'];
?>
<div style = "padding: 5px 0;">
<input type = "radio" name = "<?php echo $optionsQID; ?>" value = "<?php echo $optionsID; ?>"> <?php echo $option; ?>
</div>
<?php
}
?>
<button type="submit" name = "answerQuestion">Send Answer</button>
</form>
</div>
<?php
}
?>
答案 0 :(得分:0)
确保您在本地(使用XAMPP)或在线主机上的服务器上运行脚本。几天前,我的Ajax请求中的POST数据与我的PHP文件有类似的问题,经过数小时的谷歌搜索后解决了这个问题。我可能是错的但只是确保你在服务器上运行它(如果你想尝试免费的直播主机,你可以使用000webhost)
链接 https://www.000webhost.com/ https://www.apachefriends.org/index.html
答案 1 :(得分:0)
这是我为了让这个工作继续前进而做的。至少在我完成概念验证时。
我将if (isset($_POST["answerQuestion"])){
移动到了带来我问题的循环中,因为所有变量都是定义的,然后我得到我在POST上传递的值,这就产生了一个问题,它会为每个问题创建一条记录,即使它们是没有用户回答。我通过删除那些没有答案值的额外记录来解决这个新问题。这是一个肮脏的解决方案,但现在我需要花费很少的时间,直到有人给我一个更好的方法来做它。