【问题标题】:Retrieve a variable whos name is has another variable in it检索名称为的变量中包含另一个变量
【发布时间】:2014-04-17 22:55:40
【问题描述】:

不知道标题是否有意义,但我有一个变量可以用基本术语来描述它的名称,如下所示:

$_POST['something'+$variable2]

我有一个用于编辑所选记录的表格,此表格包含所有以前选择的记录的条目:

<form name="input" action="editcar.php" method="POST">
                    <input type="submit" value="Yes">

    while($row = mysqli_fetch_assoc($result)) 
                    {
                    echo'
</div>     
                    <table style="color:white">
                        <tr>
                            <td style="text-align:right">Manufacture:</td><td><input type="text" name="manufacture'.$row['carIndex'].'" value="'.$row['make'].'"></td> 
                            <td style="text-align:right">Model:      </td><td><input type="text" name="model'.$row['carIndex'].'" value="'.$row['model'].'"></td>
                        </tr>
                        <tr>
                            <td style="text-align:right">Colour:     </td><td><input type="text" name="colour'.$row['carIndex'].'" value="'.$row['colour'].'"></td>
                            <td style="text-align:right">Reg:        </td><td><input type="text" name="reg'.$row['carIndex'].'" value="'.$row['Reg'].'"></td>
                        </tr>
                        <tr>
                            <td style="text-align:right">Price:      </td><td><input type="text" name="price'.$row['carIndex'].'" value="'.$row['price'].'"></td>
                            <td style="text-align:right">Mileage:    </td><td><input type="text" name="mileage'.$row['carIndex'].'" value="'.$row['miles'].'"></td>
                        </tr>
                        <tr>
                            <td style="text-align:right">Max MPH:    </td><td><input type="text" name="mph'.$row['carIndex'].'" value="'.$row['mph'].'"></td>
                            <td style="text-align:right">MPG:        </td><td><input type="text" name="mpg'.$row['carIndex'].'" value="'.$row['mpg'].'"></td>
                        </tr>   
                    </table>

                </form>

            </div> ';

                }
                ?>
                </form> 

表单会针对先前选择的每条记录循环播放,以启用批量编辑。当我意识到我有多个具有相同名称的输入时,问题就出现了,所以我这样做了:

<input type="text" name="model'.$row['carIndex'].'" value="'.$row['model'].'">

将当前厌倦的记录的主键放在其名称的末尾。这似乎是一种合乎逻辑的处理方式。

但是现在我需要调用这些变量来放置在 mysql 查询中,我不知道该怎么做,或者即使我可以。

我将选定的记录保存在一个数组中,所以我有:

foreach ($postid as $carID) 
   {  
      $query = "stuff";
      mysqli_query($db, $query);
   } 

每个循环都有 $carID 包含放在表单输入名称末尾的变量。

比如:

$_POST['something'+$variable2]

是我能想到的,但不起作用。

欢迎任何适用于我的整体代码的方法,而不仅仅是解决我所提出的问题。

【问题讨论】:

  • 我只能从您发布的内容中猜测,但对我来说,您似乎不会在准备好的语句中使用这些变量。我建议一旦你解决了你的问题,你就看看 PDO。

标签: php mysql sql forms


【解决方案1】:

其实你的方法应该可行。只需将$_POST['something'+$variable2] 中的+ 替换为.。 我的提示是:在您的 html 中使用数组作为名称:

<input type="text" name="model[]" value="'.$row['model'].'">

在 php 端,您可以遍历所有 $_POST['model'],因为它现在是一个数组。

您也可以为 html 中的每个条目添加索引:

<input type="text" name="model['.$row['carIndex'].']" value="'.$row['model'].'">

【讨论】:

  • Awww yissss,仍然是新的,只是与 js 和 php 混在一起,我想我会使用数组方式,它是我存储所选记录的方式,所以它看起来确实是一种更优雅的方法。
【解决方案2】:

PHP 使用点进行连接,而不是像 Java 和 Javascript 那样使用 +:

 $_POST['something' . $variable2]

【讨论】:

  • 哦,我真傻,我还是个新手,最近我做了很多 js 和 jquery 等。谢谢。
【解决方案3】:

试试这样的:

<form ...>

<?php
 while($row = mysqli_fetch_assoc(...):
   $index =  $row['carIndex'];

?>

<input type="text" name="carmodel[<?php echo $index?>][model]" value="<?php echo $row['model'] ?>">

<?php endforeach; ?>

</form>

这样你将把数据存储在 $_POST['carmodel'] 中作为一个数组,由 carIndex 值索引,因为 $_POST 中的数据结构是由输入的名称定义的,在这里你将拥有像 carmodel[1 这样的名称][model] 例如,然后在帖子中它将位于 $_POST['carmodel'][1][model]

你也可以在这里阅读 How would I create this array structure in an HTML form?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-20
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 2021-05-19
    • 2012-03-21
    相关资源
    最近更新 更多