如何使用php更新数组值并将其放入mysql数据库?

时间:2012-02-03 17:15:50

标签: php mysql database foreach

好的,不久前我问了这个问题

How can I grab and store multiple $_POST Variables in a for each loop?

响应非常完美,它可以很好地将值插入到数据库中。但是,我现在正在重新审视这个项目,我想使用相同或类似的方法更新数据库中的一个字段,特别是该特定用户的后测试字段。这怎么可能?

目前,我有类似的内容。

$SGUID = the Unique User ID
$SGpost = the field i want to update
$SGQID = question ID

显然,这不起作用..我的代码非常草率,因为我试图在此过程中替换和编辑它。有什么想法吗?

foreach ($_POST as $p => $v)
{

 if (preg_match("/^Q\d+$/",$p)) {   //$_POST variables with Q1, Q2, Q3, etc etc

$query_3 = mysql_query("UPDATE SGresults SET SGpost = '$p', SGpostCheck = 1 WHERE SGUID = '$SGUID' AND SGQID = '$p'") or die('Error: '.mysql_error ());
    $SGQID++;

}
}
}   

当我回显$ p时,我得到以下内容     Q11 Q21 Q31 Q44 Q54 Q63 Q73 Q83 Q93 Q103 Q111 Q122 Q131 Q142 Q153 Q163 Q17

这是我想要的,除了没有Q,只有第二个值。例如,如果它是'Q163',我只想将'3'部分插入到SGpost WHERE数据库是'Q16'。

再次感谢!任何帮助将不胜感激!

EDIT :: 再次查看我的代码并改变了一些值...以下的DOES工作,所以我想我会坚持下去。除非代码不好?再次感谢您的建议。

$SGQID= 1;

foreach ($_POST as $i => $v)
  {
    if (preg_match("/^Q\d+$/",$i)) {    //$_POST variables with Q1, Q2, Q3, etc etc
// Here we insert value $v to database
    if ($SGtestType == "Post-test") {

    $query_post = mysql_query("UPDATE SGresults SET SGpost = '$v', SGpostcheck ='1' WHERE SGQID = '$SGQID' AND SGUID = '$SGUID'  ") or die('Error 109: '.mysql_error ());
    $SGQID++;           
    // ^^ increments the question value everytime an insert is made
    //last 2 fields is check for existing value.. or if not exists.. 1 if it does.
    }

}

}
}

1 个答案:

答案 0 :(得分:2)

假设您信任帖子数据不是xss攻击:

    foreach ($_POST as $p => $v)
    {

     if (preg_match("/^Q(\d+)$/",$p, $matches)) {   //$_POST variables with Q1, Q2, Q3, etc etc

$id = (int)$matches[1];

    $query_3 = mysql_query("UPDATE SGresults SET SGpost = '$id', SGpostCheck = 1 WHERE SGUID = '$SGUID' AND SGQID = '$id'") or die('Error: '.mysql_error ());
        $SGQID++;

    }
    }
    }