【问题标题】:Post Serialized data and Make the insert发布序列化数据并进行插入
【发布时间】:2011-08-31 14:21:05
【问题描述】:

我有一个表单,其中有几个按相同名称分组的单选按钮,这些单选按钮是动态生成的,总共有 20 个,但每次只会提交 4 个。每个单选按钮组作为一个 ID 作为组的名称。将表单发布到 PHP(使用 jQuery 序列化)时,我得到如下信息:

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 查询中返回一个错误,说发现了一个意外的(

【问题讨论】:

  • echo $inserirResposta;查看SQL语句的问题
  • 第一步:查看您的 SQL 查询本身并确定语法错误的位置。 只有到那时,您才会查看您的 PHP 以找出该错误是在您的代码中创建的位置。这将您的问题分解为组件,您应该将其作为调试的第一步;在我看来,你没有这样做会使这个问题过于宽泛。 SO 是问答网站,而不是支持网站。

标签: php jquery sql-server


【解决方案1】:

你是如何从 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 ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 2017-07-26
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    相关资源
    最近更新 更多