我有一个表格,其中有几个单选按钮按相同名称分组,这些单选按钮是动态生成的,总共有20个,但每次只提交4个。每个单选按钮组作为ID作为组的名称。将表单发布到PHP(使用jQuery Serialize)时,我会得到类似的结果:
1=3&2=6&4=9&7=2
我需要获取每个参数的值,在本例中为1,2,4和7,并且还要知道提交的字段是哪个(在这种情况下,字段1,2,4和7已提交)
我做了类似的事,但没有工作:
for ($c = 1; $c <= 20; $c++){
if (isset($_GET[$c])){
$question_id = $c;
$answer_score = $_GET[$c];
echo $answer_score;
$gravar = "INSERT INTO iMood_ColabsQuestionAnswers (colab_id, answer_id, score) VALUES (?, ?, ?)";
/* Set parameter values. */
$valores = array($user, $question_id, $answer_score);
echo $valores.'<br />';
/* Prepare and execute the query. */
$inserirResposta = sqlsrv_query( $conn, $gravar, $valores);
sqlsrv_free_stmt($inserirRespota);
sqlsrv_close($conn);
}
}
无法找到解决方案,因为上面的解决方案,没有看到任何记录,如果使用
$_GET['$c'];
它在SQL查询中返回一个错误,表示发现了意外的(
。
答案 0 :(得分:0)
你是如何从jquery提交序列化字符串的?
做类似
的事情$.ajax(function() {
data: '1=3&2=6&4=9&7=2'
...
});
会导致你遇到的问题。这将提交一个包含那些“查询”变量的完整字符串,但是没有相关的字段名称,因此PHP不会接受这个字符串包含单独的键/值对的事实。
然而,使用
data: { data: '1=3&2=6&4=9&7=2' }
会让PHP正常运行,你可以得到这样的数据:
$query = parse_str($_GET['data']);
foreach($query as $question_id => $answer_score) {
... do database stuff ...
}