【问题标题】:$_POST variable name is variable, how to retrieve?$_POST 变量名是变量,如何取回?
【发布时间】:2012-03-04 03:18:12
【问题描述】:

我网站的用户可以生成自定义表单。所有字段都保存在具有唯一 ID 的数据库中。当有人访问表单时,fields 'name' 属性为field*ID*,例如

<p>Your favorite band? <input type="text" name="field28"></p>
<p>Your Favorite color? <input type="text" name="field30"></p>

提交表单后,我使用 php 验证表单,但我不知道检索 $_POST[field28] 的值(或字段具有的任何数字)。

<?
while($field = $query_formfields->fetch(PDO::FETCH_ASSOC))
 {
 $id = $field[id];

 //this doesn't work!!
 $user_input = $_POST[field$id];

 //validation comes here
 }
?>

如果有人可以帮助我,真的很感激!

【问题讨论】:

    标签: php


    【解决方案1】:

    添加一些引号:

    $user_input = $_POST["field$id"];
    

    【讨论】:

      【解决方案2】:

      我建议对表单使用 PHP 的数组语法:

      <input type="text' name="field[28]" />
      

      您可以在 php 中使用 $_GET['field'][28] 访问它

      【讨论】:

      • 不知道,一个更好的解决方案,肯定会在下一个项目中使用它。目前我网站的前端已经开发好了,各种jquery动作都是基于表单字段名的,所以修改字段名有点麻烦。使用 Amber 建议的代码有什么大的缺点吗?
      • @Dirk 不,Amber 的解决方案没有任何问题。您似乎已经能够使用您的 $id 变量来定位特定名称,因此您应该已准备就绪。如果您没有$id,我的解决方案将允许您循环遍历$_POST['field'],就像获取所有值的数组一样。
      【解决方案3】:
      $user_input = $_POST['field'.$id];
      

      【讨论】:

        【解决方案4】:

        请记住,您使用string 作为input 名称的第一部分,因此请尝试类似:$user_input=$_POST['field'.$id];。 另外,我建议将他们称为array 以检索所有数据:

        <?php
            $user_inputs=array();
            while($field=$query_formfields->fetch(PDO::FETCH_ASSOC)) {
                $id=$field['id'];
                $user_inputs[]=$_POST['field'.$id];
            }
        ?>
        

        【讨论】:

          猜你喜欢
          • 2023-04-07
          • 1970-01-01
          • 1970-01-01
          • 2010-12-31
          • 1970-01-01
          • 1970-01-01
          • 2011-03-30
          • 2013-12-05
          • 1970-01-01
          相关资源
          最近更新 更多