[英]Struggling to insert values correctly into database
我想使用這種格式的多維數組:值[n]的[],其中n是問題編號。 使用此新設置,您應該最終得到以下輸入字段:
<input type="hidden" value="A" name="value[1][]">
<input type="hidden" value="B" name="value[1][]">
<input type="hidden" value="A" name="value[2][]">
<input type="hidden" value="C" name="value[2][]">
<input type="hidden" value="E" name="value[2][]">
請注意,所選值被編碼在value屬性中。 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 = implode(':', $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();
$lastID = $id->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(1) "A"
["answerCRow"]=> string(1) "C"
["answerBRow"]=> string(1) "B"
["answerERow"]=> string(1) "E" }
}
以下是我收到的錯誤以及每個錯誤鏈接到的代碼行:
警告:implode():無效的參數在第226行的/.../中傳遞
$answer = implode(':', $value);
注意:試圖在第250行的/.../中獲取非對象的屬性
$lastID = $id->insert_id;
警告:第252行的/.../中為foreach()提供了無效的參數
foreach($value as $answer) {
警告:mysqli_stmt :: execute():(23000/1062):/ 242 /行中的/.../中的鍵“ PRIMARY”的條目“ MUL-0”重復
上面的錯誤指向$insert
查詢
更多信息:
發布文本輸入后,我真正想要實現的結構如下:
array(2) {
["numQuestion"]=> array(2) {
[0]=> string(1) "1"
[1]=> string(1) "2"
}
["submitDetails"]=> string(14) "Submit Details"
["1"] => array(2) {
[0] => string(1) "A"
[1] => string(1) "C"
}
["2"] => array(2) {
[0] => string(1) "A"
[1] => string(1) "B"
[2] => string(1) "E"
}
}
用戶發布文本輸入值時,應插入問題編號和屬於其相關問題編號的答案。
一些東西:
$result
/ $_POST['value']
是一維數組,因此在foreach
循環中的$value
是一個字符串,不能implode
進行內implode
; $lastID = $id->insert_id;
應該是$insert->insert_id
,我不確定在調用該語句之前是否可以關閉連接; $value
是一個字符串(請參閱第一個要點),因此您不能在那里使用foreach
(第三個警告)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.