【问题标题】:How can I grab and store multiple $_POST Variables in a for each loop?如何在每个循环中获取和存储多个 $_POST 变量?
【发布时间】: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


【解决方案1】:
foreach ($_POST as $i => $v) {
  if (preg_match("/^Q\d+$/",$i)) {
    // Here we insert value $v to database
  }
}

【讨论】:

  • 目前试一试 Kas,我以前从未使用过 preg_match。谢谢你,我会及时通知你的!
  • 嘿,坎,这很棒!但是,我想根据我所做的每次插入抛出一个自动增量值,从 1 开始。请参阅上面编辑过的问题。
  • 自动增量值至少在您使用 sql 的情况下由数据库设置: CREATE TABLE questions (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,text TEXT NOT NULL) ENGINE = MYISAM; - 对于此表,插入看起来像“插入问题(text)值('lalala')”,然后您通过 mysql_insert_id() 或“从问题中选择 LAST_INSERT_ID”获取自动增量索引
【解决方案2】:

您可以遍历 $_POST 数组本身:

foreach ($_POST as $key => $value) {
    // Filter on value of $key
    // In this case only keep variables that start with a Q
    if (! substr($key, 0, 1) == 'Q') {
        continue;
    }

    // Do something with value
    echo $_POST[$key];     
}

如果要将值分配给与 $_POST 数组的键同名的 PHP 变量,可以使用 variable variables

$$key = $value

然后将 $_POST['demoEMP'] 的值分配给 $demoEMP。

【讨论】:

  • 谢谢 Jan,我会试试这个并告诉你。 =)
猜你喜欢
  • 2014-07-11
  • 2013-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多