我想在数据库中执行插入操作,以便数据库表Individual Answer包含以下数据:
Individual_Answer 表:
AnswerId  AnswerMarks
295       2
296       1
297       1
298       3
299       3
问题是它没有插入数据库。是导致问题的php / mysqli代码还是没有访问正在执行插入(insertmarks.php)的php页面的ajax?
下面是我在 php/mysqli 中的代码:
<?php
 // connect to the database
 include('connect.php');
  /* check connection */
  if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    die();
  }
var_dump($_POST);  
 $answersql = "INSERT INTO Individual_Answer (AnswerId, AnswerMarks) 
    VALUES (?, ?)";
if (!$insertanswer = $mysqli->prepare($answersql)) {
    // Handle errors with prepare operation here
    echo __LINE__.': '.$mysqli->error;
}
//make sure both prepared statements succeeded before proceeding
if($insertanswer)
{
   $c = count($_POST['answerId']);
    for($i = 0;  $i < $c; $i++ )
    {
$insertanswer->bind_param('ii', $_POST['answersId'][$i], $_POST['answerMarks'][$i]);
}
    //close your statements at the end
    $insertanswer->close();
}
?>
下面是var_dump($_POST)输出:
array(7) { 
["q1_ans_org"]=> string(1) "4" 
["q1_ans"]=> string(1) "0" 
["answerMarks"]=> array(5) 
{ 
[0]=> string(1) "2" 
[1]=> string(1) "1" 
[2]=> string(1) "1" 
[3]=> string(1) "3" 
[4]=> string(1) "3" } 
["q2_ans_org"]=> string(1) "6" 
["q2_ans"]=> string(1) "0" 
["num_groups"]=> string(1) "2" 
["submitMarks"]=> string(12) "Submit Marks" 
} 
下面是假设访问 insertmarks.php 的 html 和 jquery/ajax 代码:
<form id="Marks" action="penalty.php" method="post">
...
<p>
<input type='hidden' id='num_groups' name='num_groups' value='<?php echo$questionId?>'>
<input id="submitBtn" name="submitMarks" type="submit" value="Submit Marks" />
</p>
</form>
...
<script type="text/javascript">
myClickHandler = function(e) {
       var ng = $('#num_groups').val();
       for (var group = 1; group <= ng; group++) {
         if (!validation(group)) return false;
       }
       if (confirm("Make sure that your marks are correct, once you proceed after this stage you would not be able to go back and change any of your marks for this Assessment." + "\n" + "\n" + "Are you sure you want to Proceed?" + "\n")) {
         $.ajax({
           url: "insertmarks.php",
           data: $("#Marks").serialize(),
           async: false,
           type: "POST"
         });
         return true;
      } else {
        return false;
      }
    };
    $('#Marks').submit(myClickHandler);
});
</script>