Попытка вставить данные в таблицу MySQL в одном запросе, но при этом изменить один указанный столбец c - PullRequest
3 голосов
/ 09 марта 2020

Я пытаюсь INSERT добавить некоторые данные в мою таблицу с помощью оператора SQL. Пользователь завершает опрос, который состоит из 10 вопросов, а затем я хочу INSERT эти 10 ответов в БД, используя один оператор SQL. Таким образом, по существу, только 2 поля, которые будут изменены, будут столбцы questionID и answer? Обратите внимание, что я только что привел 2 вопроса в качестве примера в тегах <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

1 Ответ

2 голосов
/ 09 марта 2020

Вам не хватает 1 значения $ questionID.

try

$questionID = 1;
foreach ($answer_bank as $a) {
     $stmt->execute();
     $questionID++;
}

Усовершенствуйте свой запрос, используя псевдоним

$stmt = $conn->prepare ("SELECT 
          `qn`.`questionnaireName`,
          `qQ`.`questionID`,
          `q`.`question`
      FROM `questionnaire` `qn`
      INNER JOIN `questionnaireQuestions` `qQ` ON `qn`.`questionnaireID` = `qQ`.`questionnaireID`
      INNER JOIN `question` `q` ON `qQ`.`questionID` = `q`.`questionID` 
      WHERE `qn`.`questionnaireName` = ? AND `q`.`questionID` = ?");
...