试图通过一个查询将数据插入到MySQL表中,但又更改了一个特定的列

问题描述 投票:2回答:1

我正在尝试使用SQL语句将一些数据INSERT放入表中。用户完成了一个包含10个问题的调查,然后我想使用一个SQL语句将这10个答案INSERT放入数据库。因此,实际上只有两个要更改的字段是questionIDanswer列?请注意,我刚刚在<form>标签中提供了两个问题作为示例。

调查表:

<!-- Attempt 2 of questionnaire -->
<form action="scripts/submit-survey.php" method="post">
    <?php
        $questionnaire = "Welcome Questionnaire";
        $questionID = 1;
        $stmt = $conn->prepare ("SELECT `questionnaire`.`questionnaireName`, `questionnaireQuestions`.`questionID`,`question`.`question` FROM `questionnaire` INNER JOIN `questionnaireQuestions` ON `questionnaire`.`questionnaireID` = `questionnaireQuestions`.`questionnaireID` INNER JOIN `question` ON `questionnaireQuestions`.`questionID` = `question`.`questionID` WHERE `questionnaire`.`questionnaireName` = ? AND `question`.`questionID` = ?");
        $stmt->bind_param("si", $questionnaire, $questionID);
        $stmt->execute();
        $result = $stmt->get_result();
        while($row = $result -> fetch_assoc())  
            {
    ?>
    <p><?php echo $row['question']; ?></p>
    <?php
            }
    ?>
    <label><input type="radio" name="q1" value="1"> 1</label>
    <br>
    <label><input type="radio" name="q1" value="2"> 2</label>
    <br>
    <label><input type="radio" name="q1" value="3"> 3</label>
    <br>

    <?php
        $questionnaire = "Welcome Questionnaire";
        $questionID = 2;
        $stmt = $conn->prepare ("SELECT `questionnaire`.`questionnaireName`, `questionnaireQuestions`.`questionID`,`question`.`question` FROM `questionnaire` INNER JOIN `questionnaireQuestions` ON `questionnaire`.`questionnaireID` = `questionnaireQuestions`.`questionnaireID` INNER JOIN `question` ON `questionnaireQuestions`.`questionID` = `question`.`questionID` WHERE `questionnaire`.`questionnaireName` = ? AND `question`.`questionID` = ?");
        $stmt->bind_param("si", $questionnaire, $questionID);
        $stmt->execute();
        $result = $stmt->get_result();
        while($row = $result -> fetch_assoc())  
            {
    ?>
    <p><?php echo $row['question']; ?></p>
    <?php
            }
    ?>
    <label><input type="radio" name="q2" value="1"> 1</label><br>
    <label><input type="radio" name="q2" value="2"> 2</label><br>
    <label><input type="radio" name="q2" value="3"> 3</label><br>
    <input type="submit" value="Submit">
</form>

submit-survey.php

<?php
  require 'db.php';
  session_start();
  $seshID = $_SESSION['studentID'];

    $a1 = $_POST['q1'];
    $a2 = $_POST['q2'];
    $a3 = $_POST['q3'];
    $a4 = $_POST['q4'];
    $a5 = $_POST['q5'];
    $a6 = $_POST['q6'];
    $a7 = $_POST['q7'];
    $a8 = $_POST['q8'];
    $a9 = $_POST['q9'];
    $a10 = $_POST['q10'];
    $answer_bank = array(
      $a1, $a2, $a3, $a4, $a5, $a6, $a7, $a8, $a9, $10
    );
    $stmt = $conn->prepare ("INSERT INTO `studentAnswer` (`studentAnswerID`, `studentID`, `questionID`, `answer`) VALUES (NULL, ? , ? ,?)");
          //echo $i;
          //echo ${"a". $i};
            $stmt->bind_param("iii", $seshID , $questionID , $a);
            foreach ($answer_bank as $a_b) {
              list($a) = $a_b;
              $stmt->execute();
          }
            $result = $stmt->get_result();

?>

数据库表:DB

php mysqli prepared-statement
1个回答
0
投票

您只需要在bind_param循环内移动foreach语句

foreach ($answer_bank as $a_b) {
    list($a) = $a_b;
    $stmt->bind_param("iii", $seshID , $questionID , $a);
    $stmt->execute();
}
© www.soinside.com 2019 - 2024. All rights reserved.