如何使用PHP在MySQL中插入嵌套数组

如何使用PHP在MySQL中插入嵌套数组,php,mysql,sql,arrays,Php,Mysql,Sql,Arrays,我有一个数组,表示我的应用程序创建的测验。在这里,我有一个嵌套数组中的问题标题、问题类型和答案 以下是该阵列的一个示例: Array ( [0] => stdClass Object ( [options] => Array ( [0] => stdClass Object (

我有一个数组,表示我的应用程序创建的测验。在这里,我有一个嵌套数组中的问题标题、问题类型和答案

以下是该阵列的一个示例:

Array
(
    [0] => stdClass Object
        (
            [options] => Array
                (
                    [0] => stdClass Object
                        (
                            [valid] => 
                            [content] => Answer 1
                        )

                    [1] => stdClass Object
                        (
                            [valid] => 
                            [content] => Answer 2
                        )

                    [2] => stdClass Object
                        (
                            [valid] => 
                            [content] => Answer 3
                        )

                )

            [content] => Question 1
            [type] => radios
        )

    [1] => stdClass Object
        (
            [options] => Array
                (
                    [0] => stdClass Object
                        (
                            [valid] => 
                            [content] => Answer 1
                        )

                    [1] => stdClass Object
                        (
                            [valid] => 
                            [content] => Answer 2
                        )

                    [2] => stdClass Object
                        (
                            [valid] => 
                            [content] => Answer 3
                        )

                )

            [content] => Question 2
            [type] => radios
        )

)
现在,我的代码如下所示:

$name = $_POST['name'];
$test = json_decode($_POST['test']);

$con=mysqli_connect("Localhost","root","","test");

if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
这包括到数据库的连接。
在做研究时,我发现了一个问题。它涵盖了插入过程的基本原则,但我在尝试实施解决方案时遇到了一个问题:

我有两张桌子。问题表和选项表。“我的数据”中的嵌套数组“选项”需要插入到选项表中,并且每个位置都引用了主要问题。在将“内容”和“类型”字段插入问题表时,我如何做到这一点

编辑:我试过这个代码,但它目前不起作用。我怎样才能适应它

$sql = "INSERT INTO question (content, type) values ";

$valuesArr = array();
    foreach($test as $row){

    $content = mysql_real_escape_string( $row['content'] );
    $type = mysql_real_escape_string( $row['type'] );

$valuesArr[] = "('$content', '$type')";
}

$sql .= implode(',', $valuesArr);
编辑:我的表格结构:

问题

  • ID(主键)
  • 内容
  • 类型
选项

  • ID(主键)
  • 问题编号(FK)
  • 内容

您的表格结构是:

问题选项

ID(PK)
ID(PK)

内容
问题ID(FK)

类型
内容

我将整个数组作为
$questions
(您在问题中粘贴的对象)


您的问题和选项表结构?,您想将选项表中的ID存储到相应的问题?@boom_Shiva我想通过ID将选项引用到其问题。如果有更好的方法,请告诉我。已编辑的问题。您是否正在存储选项的有效字段的值,即对象中的值?我已更新answer@boom_Shiva现在不需要它。在我学会如何存储后,我会在时机成熟时存储它。因此,根据您对答案中字段的要求进行修改,主要逻辑将是相同的。
foreach( $questions as $question ){
  $options = $question->options;
  $options_id = array();
  $question_query = "INSERT INTO questions (Content, Type) VALUES ({$question->content}, {$question->type})";
  if( !mysqli_query($con, $question_query) ){ echo "Query failed"; return; }
  $question_id= mysqli_insert_id();
  foreach($options as $option){
      $options_query = "INSERT INTO options (Question_ID, Content, Valid) VALUES ({$question_id}, {$option->content}, {$option->valid})";
      if( mysqli_query($con, $options_query) ){
       $options_id[] = mysqli_insert_id();
      }
  }

  if($options_id){
    //Do something or store options and question id
    var_dump($options_id); //just to check
  }
}