Php 内爆并形成数据

Php 内爆并形成数据,php,mysql,Php,Mysql,在将表单保存到数据库和内爆方面遇到了一个小问题。问题如下: 我有一个表单,它有多个字段,包括复选框,它有一个值数组。如果我将整个表单发送到我的php脚本,它会将复选框值与最后一个选中的值剥离,因此问题是,我只会在数据库中获取最后一个选中的值,而不是所有选中的值 所以我做了一些调试,发现了问题,就在这一行: $values = "'" . implode("', '", $_POST) . "'"; 不幸的是,这剥夺了我的数据 编辑: 这是我的PHP脚本: $hoeveelheidvalue

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

我有一个表单,它有多个字段,包括复选框,它有一个值数组。如果我将整个表单发送到我的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)";

您可以使用
serialize()
,它是一个PHP函数,用于将数组或对象转换为字符串,然后可以使用
unserialize()将其重新分解为数组或对象

$values=序列化($\u POST)

或者最好还是使用

$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_uu或PDO。所以它也可能是我。

见上文,我进行了编辑。它是动态保存到数据库中的,所以我认为我不能使用序列化。这只是因为您不记得浏览器只向PHP脚本发送选中的复选框,而忽略未选中的复选框。我需要测试一些东西。谢谢你的回答!如果我修复了它,我会确保任何人都知道解决方案是什么,我会将你的答案标记为正确!好吧,这不是答案。如果我序列化POST数组,我会得到这样的结果:请参见上面的编辑请参见我尝试的答案现在您已经准确地解释了您尝试执行的操作。检查错误将显示语法错误。不知道您正在使用哪个MySQL API进行连接/查询。必须有100种更好的方法来实现这一点,顺便问一下,您在哪里检查$\u POST数组中的值有100000种更好的方法。目前我需要让这项工作发挥作用,但这只是一个临时解决方案。@RiggsFolly显然对OP来说意味着什么,他们觉得这无关紧要,或者他们不知道我在说什么。
VALUES(a:12:{s:16:“multipleradios-0”
这看起来像是MySQL不会抱怨的吗?尚未得到响应。如果我们不知道这一点,我们如何帮助您并为您提供正确的错误检查方法。
$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); 

}