内爆和表格数据

时间:2015-06-09 13:50:08

标签: php mysql

在将表单保存到数据库并进行内爆方面遇到了一个小问题。问题如下:

我有一个包含多个字段的表单,包括复选框,其中包含一组值。如果我将整个表单发送到我的php脚本,它会删除复选框值并检查最后一个,所以问题是,我只获取数据库中的最后一个检查值而不是所有选中的值。

所以我做了一些调试,我发现了问题,就在这一行:

$values  =  "'" . implode("', '", $_POST) . "'";

遗憾的是,这剥夺了我的数据。

编辑:

这是我的PHP脚本:

$hoeveelheidvalues = count($_POST);


$values  =  "'" . implode("', '", $_POST) . "'";
$queryvoorderesperform = "INSERT INTO `app_res_per_form` (";

for($i = 1; $i <= $hoeveelheidvalues; $i++)
{
    if($i==$hoeveelheidvalues)
    {
        $queryvoorderesperform .= "vraag$i";
    }
    else{
        $queryvoorderesperform .= "vraag$i, ";
    }

}

$queryvoorderesperform .= ") VALUES ($values)";

编辑2:

如果我使用序列化,我会得到一个非常奇怪的字符串。这是$ queryvoorderespform:

INSERT INTO `app_res_per_form` (vraag1, vraag2, vraag3, vraag4, vraag5, vraag6, vraag7, vraag8, vraag9, vraag10, vraag11, vraag12) 
VALUES (a:12:{s:16:"multipleradios-0";s:11:"Orientation";s:11:"textinput-0";s:0:"";s:20:"multiplecheckboxes-0";s:9:"Recycling";s:11:"textinput-1";s:0:"";s:10:"interestin";s:15:"Diverter Valves";s:12:"rotaryvalves";s:7:"AL, AXL";s:14:"divertervalves";s:3:"PTD";s:15:"othercomponents";s:3:"DUC";s:11:"textinput-3";s:0:"";s:16:"multipleradios-1";s:18:"Systems Integrator";s:16:"multipleradios-2";s:38:"Will buy product in long time (1 year)";s:15:"standcrewmember";s:13:"Aap";})

1 个答案:

答案 0 :(得分:2)

您可以使用serialize(),它的PHP函数将数组或对象转换为字符串,然后使用unserialize();

将其重新水合回数组或对象

$ values = serialize($ _ POST);

或者更好仍然使用

将$ _POST的内容保存为JSON
$values = json_encode($_POST);

使用

重新水合成数组或对象
$var = json_decode($x);

这些可用于PHP数组或PHP对象。

现在好了,我看到你实际上想要做什么所以试试这个: -

$fields = '';
$values = '';
$count = 0;

foreach ( $_POST as $idx => $val ) {
    // I assume you are skipping occurance 0 for a reason
    if ( $count == 0 ) { 
       $count++;
       continue; 
    }

    $fields .= sprintf('vraag%d,', $count );
    $values .= sprintf("'%s',", $val );

    $count++;
}
//trim off trailing commas
rtrim($fields, ',');
rtrim($values, ',');

$sql = sprintf('INSERT INTO `app_res_per_form` (%s) VALUES (%s)',
               $fields, $values); 

}

哦,我假设你正在使用MYSQL_扩展!有人会告诉你不要切换到MYSQLI_或PDO。所以它也可能是我。