【发布时间】:2011-10-17 13:36:57
【问题描述】:
所以目前我正在使用第 3 方软件应用程序来获取各种调查的结果。此应用程序通过 $_POST 变量将结果发送到页面。
例如..
$demoEMP = $_POST['demoEMP'];
这只是将特定问题的答案存储到一个变量中。
我想要做的是将问题 1-20 存储在 POST 变量中并将它们插入数据库中。 我不想做的是写 20+ 插入命令或 20+ $var = $_POST['var']
所以我在想一个 for 循环可以解决问题……这就是我目前所拥有的……基于查看各种方法和教程。 =/
for ($i = 0; $i < 55; $i++) {
$answer = "Q{$i}";
echo $_POST[$answer];
}
我是否走在正确的轨道上?感谢您的帮助!
更新:: Kas 的解决方案效果很好。
我用过这样的东西……
foreach ($_POST as $i => $v)
{
if (preg_match("/^Q\d+$/",$i)) {
// Here we insert value $v to database
$query_2 = mysql_query("INSERT INTO SGresult VALUES ('', '', '$pID', '$SGQID','$v')") or die('Error: '.mysql_error ());
} }
但是,我现在正试图想办法为问题添加一个 ID,并让该 ID 在每次插入时自动递增。我以为我可以做类似 $SGQID++ 的事情,但这似乎不起作用.. 有人有什么想法吗?
再次感谢!
好吧,经过更多修改后,似乎 ++ 的位置已关闭,它需要在查询之后...正确的代码如下。
$SGQID= 1;
foreach ($_POST as $i => $v)
{
if (preg_match("/^Q\d+$/",$i)) {
// Here we insert value $v to database
$query_2 = mysql_query("INSERT INTO SGresult VALUES ('', '', '$pID', '$SGQID','$v')") or die('Error: '.mysql_error ());
$SGQID++; //added value to increment Question ID in DB
}
}
【问题讨论】:
-
是的,您几乎走上了正轨。您可以使用 count($_POST) 而不是 55。foreach 也可以与 $counter 变量一起使用。
-
在 $_POST 数组上使用 foreach() 并过滤键名是更好的解决方案,因为使用带有 count($_POST) 的 for 循环假定您连续编号 $_POST 变量,并且没有其他变量传递给您的脚本。
标签: php mysql post for-loop survey