Php 将未定义数量的表单数据写入MySQL

Php 将未定义数量的表单数据写入MySQL,php,mysql,forms,Php,Mysql,Forms,我现在正试着将我的头脑集中在以下几点上: 我有一个表单,它向PHP脚本提交用户定义数量的值,我需要将它们写入MySQL数据库 表单本身工作正常,print\u r()如下所示显示我的值: [items] => Array ( [1] => Array ( [option] => 3 [ch

我现在正试着将我的头脑集中在以下几点上:

我有一个表单,它向PHP脚本提交用户定义数量的值,我需要将它们写入MySQL数据库

表单本身工作正常,
print\u r()
如下所示显示我的值:

[items] => Array
            (
                [1] => Array
                    (
                        [option] => 3
                        [check_1] => 1
                    )

                [2] => Array
                    (
                        [option] => 2
                        [check_1] => 1
                    )

                [17] => Array
                    (
                        [check_1] => 1
                        [check_3] => 1
                    )

            )
每个项目将有一个选项值和最多十个复选框。现在,我需要以这样的方式结束,以便将每个项写入数据库:

INSERT INTO table (item_id, option, check_1, check_2,...) 
VALUES ('$ItemID', '$OptionValue', '$Check_1_Value', '$Check_2_Value',...)
我最大的问题是读取条目ID(本例中为1、2和17)并将其放入变量中。

帮助位于

解析数组:

foreach( $items as $k1 => $a1 )
{ // should be escape for safety mysql_real_escape() or ...
    $dbCols = "item_id"; 
    $dbValues = $k1;
    foreach( $a1 as $k2 => $v2 )
    {
        $dbCols .= ",$k2"; 
        $dbValues .= ",$v2";
    }
    echo "INSERT INTO `table` ( $dbCols ) VALUES ( $dbValues );\n";
}
结果:

INSERT INTO `table` ( item_id,option,check_1 ) VALUES ( 1,3,1 );
INSERT INTO `table` ( item_id,option,check_1 ) VALUES ( 2,2,1 );
INSERT INTO `table` ( item_id,check_1,check_3 ) VALUES ( 17,1,1 );

您是否错过了第三次出现的
[option]=>?
,或者该字段是否会从该数组中丢失?向我们展示您迄今为止所做的尝试,它为我们提供了一个起点,并告诉我们您正在使用哪种数据库API—如果值的数量是用户定义的,这将如何处理您的表-它必须有一组列。你确定你的数据库正常化了吗?显然,我不知道数据背后的逻辑,但也许这些值在辅助表的单独行中比在主表的不同列中更好?@riggsfully:选项可以是missing@ADyson这不是旁白,这是非常正确的观点。这将使信息的存储变得更加容易。你真的应该补充一些解释,说明为什么这会起作用?在目前的形式下,它没有提供任何解释,可以帮助社区的其他人理解你是如何解决/回答这个问题的。这对于已经有答案的问题尤其重要。@ishmaelMakitla我最大的问题是读取项目ID(本例中为1、2和17)并将其放入变量=>问题是将ID值放入变量。。。不是吗
foreach
会有帮助。我能解决这个问题,但那不是问题所在
foreach( $items as $k1 => $a1 )
{ // should be escape for safety mysql_real_escape() or ...
    $dbCols = "item_id"; 
    $dbValues = $k1;
    foreach( $a1 as $k2 => $v2 )
    {
        $dbCols .= ",$k2"; 
        $dbValues .= ",$v2";
    }
    echo "INSERT INTO `table` ( $dbCols ) VALUES ( $dbValues );\n";
}
INSERT INTO `table` ( item_id,option,check_1 ) VALUES ( 1,3,1 );
INSERT INTO `table` ( item_id,option,check_1 ) VALUES ( 2,2,1 );
INSERT INTO `table` ( item_id,check_1,check_3 ) VALUES ( 17,1,1 );