当前位置: 首页 > 知识库问答 >
问题:

努力将值正确插入数据库

归和惬
2023-03-14

我想使用以下格式的多维数组:value[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个答案

酆翔宇
2023-03-14

有几件事:

  1. $result/$\u POST['value']是一个一维数组,因此$valueforeach循环中是一个字符串,不能在其上使用内爆
  2. $lastID=$id-

 类似资料:
  • 因此,我试图编写一个代码,将csv文件加载到每个选项卡上的QTableWidget中,然后可以在其顶部编辑和保存。然而,当我保存时,程序由于各种原因崩溃。虽然没有设置自动加载,但我试图一次解决一个问题! 我看到过很多帖子似乎都在问同样的问题,但在实现它们时,它们似乎不起作用,有些是因为它们使用tableview而不是QTableWidget,有些可能是因为我没有正确地实现它,因为我还不熟悉编码。

  • 我想使用这种格式的多维数组:值[n][],其中n是问题号。使用此新设置,您最终应该使用以下复选框字段: 请注意,选定的值编码在value属性中。name属性只包含值所属的问题。 因此,上述输入说明的是: 我想在下面的“问题”和“答案”数据库表中插入这些详细信息: 问题表: 答题表: 现在,我已经尝试编写下面的mysqli/php代码,将这些值插入数据库,但我收到错误,并在想要实现我想要实现的目标时

  • 我有以下php代码,试图 a)要求用户输入学校密码b)查找数据库表“教师”,然后将新值(输入文本框)覆盖在数据库中学校密码的旧值上。 目前的问题是,它确实用新输入的pin向表添加了一行,但我希望它覆盖该特定教师的现有值(基本上覆盖现有值)。 php处理程序代码如下: HTML表单代码: 数据库结构(tbl:教师)字段如下所示 发生这种情况的页面上有一名教师登录,因此他们的用户名显示在屏幕上。 更新

  • 本文向大家介绍Android 将数据插入数据库,包括了Android 将数据插入数据库的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 问题内容: 我一直在看这段代码已有一段时间了,但我看不出问题出在哪里。我已经阅读了整个StackOverflow,但仍然看不到我的错误在哪里。 错误在第13行中,即thats 。我尝试通过http://www.w3schools.com/php/php_mysql_insert.asp帮助自己,但对我没有太大帮助。 问题答案: 警告: 切勿将 w3schools 用于学习目的。他们的教程中有很多错

  • 问题内容: 好的,所以我一直在研究Steam Web API,我将其中一个值存储在名为的变量中。当我使用此代码片段将其插入到mysql数据库中时,它会插入一个与存储在变量中不同的整数。 返回真实的int,回显它也是如此。不太确定这里发生了什么,我们将不胜感激。 问题答案: 可能是因为您将查询用双引号引起来,但是变量用单引号引起来,因此将其视为文字,并且如果该列是int,则将得到0。 尝试这个: 另