我有一个数组,代表我的应用程序创建的测验。在这里,我在嵌套数组中获得了问题标题、问题类型及其答案。
这是数组的示例:
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/