gpt4 book ai didi

PHP mysql 将关联数组从 "dynamic"形式插入数据库

转载 作者:行者123 更新时间:2023-11-29 09:14:42 26 4
gpt4 key购买 nike

我有一个允许重复字段的表单。该表单通过 php 发布并插入到数据库中。我的问题是我似乎无法正确循环数组。我是否正确设置了表单(name 的格式是否正确)并且我是否正确循环数组?我没有成功插入任何数据。

诀窍在于重复的字段需要粘在一起。

将字段视为问题和答案的集合。

每个问题都有标题、问题文本和文件输入。

每个答案都有一个标题、文件输入的答案文本以及一个用于记录正确答案的复选框。

我的名称的设置如下:

name='question[1][title]'
name='question[1][text]'
name='question[1][file]'

answer[1][title][]
answer[1][text][]
answer[1][file][]
answer[1][correct][]

插入表单的php如下:

$insert_question = $db->prepare(
'insert into questions (title, text) values (?, ?)');
$insert_answer = $db->prepare(
'insert into answers (question_id, title, text, correct)'.
' values (?, ?, ?, ?)');
foreach ($_POST['question'] as $q_num => $q)
{
$insert_question->execute(array($q['title'], $q['text']));
$q_id = $db->lastInsertId();

//********************
// insert files
//********************

foreach ($_POST['answer'][$q_num] as $a)
{
$insert_answer->execute(
array($q_id, $a['title'], $a['text'], $a['correct']));
}
}

抱歉,这是一个很大的问题。我已经为此工作了两天,但已经没有想法了。

最佳答案

我不确定我是否理解你的问题(我英语说得不太流利)。

但是这里你需要另一个循环而不是这个循环:

   foreach ($_POST['answer'][$q_num] as $a)
{
$insert_answer->execute(
array($q_id, $a['title'], $a['text'], $a['correct']));
}

喜欢:

$lim = count($_POST['answer'][$q_num]['title']);
for($i=0;$i<$lim;++$i){
$insert_answer->execute(
array($q_id, $_POST['answer'][$q_num]['title'][$i], $_POST['answer'][$q_num]['text'][$i], $_POST['answer'][$q_num]['correct'][$i]));
}

它没有测试任何内容,只有当您始终在答案中得到标题、文本和正确答案时,它才应该起作用。

关于PHP mysql 将关联数组从 "dynamic"形式插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4512253/

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