gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 13:21:05 24 4
gpt4 key购买 nike

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

这是数组的示例:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com