簡體   English   中英

努力將值正確插入數據庫

[英]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"
                                      }
        }

用戶發布文本輸入值時,應插入問題編號和屬於其相關問題編號的答案。

一些東西:

  1. $result / $_POST['value']是一維數組,因此在foreach循環中的$value是一個字符串,不能implode進行內implode
  2. $lastID = $id->insert_id; 應該是$insert->insert_id ,我不確定在調用該語句之前是否可以關閉連接;
  3. $value是一個字符串(請參閱第一個要點),因此您不能在那里使用foreach (第三個警告)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM