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

标签 php mysql sql arrays

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

这是数组的示例:

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();
}

这涵盖了与数据库的连接。
在进行研究时我发现this问题。它涵盖了插入过程的基本原理,但我在尝试实现解决方案时遇到了问题:

我有两张 table 。问题表和选项表。我的数据中的嵌套数组“选项”需要插入选项表中,并且其每个位置都引用主要问题。在将“内容”和“类型”字段插入到问题表中时,如何执行此操作?

编辑:我尝试了此代码,但目前无法正常工作。我该如何适应它?

$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(PK)
  • 内容
  • 类型

选项

  • ID(PK)
  • Question_ID(外语)
  • 内容

最佳答案

您的表结构是:

问题 选项

ID(PK) ID(PK)

内容 Question_ID (FK)

类型 内容

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

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
  }
}

关于php - 如何使用 PHP 在 MySQL 中插入嵌套数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20833733/

相关文章:

php - 限制对 PHP 管理按钮的访问

php - 加载时刷新页面一次

php - Google Cloud SDK - 没有名为 ipaddr 的模块

mysql - SQL 查询错误 - If Else 语句

sql - 为 Outlook 2007 构建表单

PHP fatal error : Class 'PDO' not found

mysql - 抛出“不是数组引用”错误

php - 如何向我的 php mysql 搜索引擎添加自动建议?

mysql - 插入后获取 UUID() 的值?

php - SQL 查询问题(使用 3 个表)