我想使用這種格式的多維數組:value [n] [],其中n是問題編號。使用此新設置,您應該以下面的複選框字段結束:如何正確發佈和插入數據到數據庫中?
<input type="checkbox" value="A" name="value[1][]">
<input type="checkbox" value="B" name="value[1][]">
<input type="checkbox" value="A" name="value[2][]">
<input type="checkbox" value="C" name="value[2][]">
<input type="checkbox" value="E" name="value[2][]">
請注意,所選值將在值屬性中編碼。 name屬性只包含值所屬的問題。
那麼,上述輸入指出的是:
question 1: answer: A
question 1: answer: B
question 2: answer: A
question 2: answer: C
question 2: answer: E
我想這些細節插入「問題」和下面的「答案」的數據庫表:
問表:
SessionId QuestionId
MUL 1
MUL 2
回答表格:
AnswerId (auto) SessionId QuestionId Answer
1 MUL 1 A
2 MUL 1 B
3 MUL 2 A
4 MUL 2 C
5 MUL 2 E
現在我已經嘗試編寫下面的mysqli/php代碼來將這些值插入到數據庫中,但我正在接收錯誤,並且想要實現我想實現的目標時失敗。我需要幫助才能在相關表格中正確插入正確的值。
以下爲PHP/mysqli的代碼:
var_dump($_POST);
$i = 0;
$c = count($_POST['numQuestion']);
for($i = 0; $i < $c; $i++){
/*
switch ($_POST['gridValues'][$i]){
case "3":
$selected_option = "A-C";
break;
case "4":
$selected_option = "A-D";
break;
case "5":
$selected_option = "A-E";
break;
default:
$selected_option = "";
break;
}
*/ needed later on when I insert grid values
$results = $_POST['value'];
foreach($results as $id => $value) {
$answer = $value;
$questionsql = "INSERT INTO Question (SessionId, QuestionId)
VALUES (?, ?)";
$sessid = $_SESSION['id'] . ($_SESSION['initial_count'] > 1 ? $_SESSION['sessionCount'] : '');
if (!$insert = $mysqli->prepare($questionsql)) {
// Handle errors with prepare operation here
}
$insert->bind_param("si", $sessid, $id);
$insert->execute();
if ($insert->errno) {
// Handle query error here
}
$insert->close();
$insert->insert_id;
foreach($value as $answer) {
$answersql = "INSERT INTO Answer (SessionId, QuestionId, Answer)
VALUES (?, ?, ?)";
if (!$insertanswer = $mysqli->prepare($answersql)) {
// Handle errors with prepare operation here
}
$insertanswer->bind_param("sis" $sessid, $lastID, $answer);
$insertanswer->execute();
if ($insertanswer->errno) {
// Handle query error here
}
$insertanswer->close();
}
}
}
的var_dump($_POST)
輸出該下面:
array(3) {
["numQuestion"]=> array(2) {
[0]=> string(1) "1"
[1]=> string(1) "2"
}
["submitDetails"]=> string(14) "Submit Details" ["value"]=> array(4) {
["answerARow"]=> string(2) "on"
["answerCRow"]=> string(2) "on"
["answerBRow"]=> string(2) "on" ["answerERow"]=> string(2) "on"
}
}
下面是我收到錯誤和每個錯誤被鏈接到的代碼行:
警告:在第252行的/.../中爲foreach()提供了無效參數
foreach($value as $answer) {
警告:mysqli_stmt ::執行():(一千〇六十二分之二萬三):重複條目 'MUL-0' 的鍵 '主要' 在上線/.../ 242
上述錯誤顯示,被插入毫無疑問號,因爲它使顯示爲「0」
你正在做外的foreach,通過循環'$ _ POST [「值」]'和分配鍵'$ id'和值到'$價值'。所以'$ id's是「answerARow」,「answerCRow」等,「$ value」是「A」,「C」,「B」和「E」。顯然你不能循環一個字符串,因此foreach錯誤。 – Travesty3
您的$ _POST與您的表單不符? 「answerARow」類型鍵從哪裏來的/ – ernie
@ernie answerARow來自用戶選擇的答案按鈕:我在這裏有一個jsfiddle,你可以看看我的應用程序是什麼樣的:jsfiddle.net/ybZvv/59請按照步驟在小提琴中:1:當你打開小提琴時,點擊「添加問題」按鈕兩次,這將追加2行。 2:在第一行中選擇答案按鈕「A」和「C」,在第二行中選擇答案按鈕「A」,「B」和「E」。下方顯示所選每個答案按鈕的文本輸入值。 – user1701484