尝试将记录插入数据库但数据未正确插入数据库表。
这是数据库表:
问题数据库表:
question_number question_no text …
在您选择的查询中插入 $question_number 但它应该是您在问题表中插入最后一个插入ID的最后一个插入ID使用它 $last_id = mysqli_insert_id($conn);
$question_number
$last_id = mysqli_insert_id($conn);
//Updated Choice query $query = "INSERT INTO `choices` (question_number, is_correct, text) VALUES ('$last_id','$is_correct','$value')";
希望这可以帮助
既然你的 question_number 是插入的问题中自动递增的ID,这是您需要插入的值 question_number 你的新行的列 choices 。
question_number
choices
通过执行获取最后插入的id
$insert_row->insert_id;
我已经修改了你的代码以简化它,并将它转换为使用准备好的语句,你应该为你做 questions 也插入。
questions
使用预准备语句在循环中插入多行时具有额外的好处,就像您一样。您准备查询 一旦 ,并执行多次。
if ($insert_row) { $question_number = $insert_row->insert_id; $query = "INSERT INTO `choices` (question_number, is_correct, text) VALUES (?, ?, ?)"; $stmt = $mysqli->prepare($query) or die($mysqli->error.__LINE__); foreach ($choices as $choice => $value) { if (!empty($value) { $is_correct = (int)($correct_choice == $choice); //Choice query //Run query $stmt->bind_param('sss', $question_number, $is_correct, $value); $stmt->execute(); if ($stmt->errno) { die('Error : ('.$stmt->errno . ') '. $stmt->error); } } } $stmt->close(); $msg = 'Question has been added'; }
mysqli::insert_id
mysqli::prepare
mysqli-stmt::insert_id