发布序列化数据并进行插入

时间:2011-08-31 14:21:05

标签: php jquery sql-server

我有一个表格,其中有几个单选按钮按相同名称分组,这些单选按钮是动态生成的,总共有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查询中返回一个错误,表示发现了意外的(

1 个答案:

答案 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 ...
}