如何循环访问动态创建的表单


How do I loop through a dynamically created form?

我对 php 相当陌生,我想知道如何循环浏览动态创建的表单,以便我可以将输入到表单中的任何内容输入到我的数据库中 - 所以看起来我的代码有问题。因此,度量和 foodid 是整数,unitMeasurement 是选择选项表单类型中的字符串。

<?php
if ($_POST['formSubmit'] == 1) {
  $measurement = $_POST['measurement'];
  $foodid = $_POST['foodid'];
  $unitMeasurement = $_POST['unitMeasurement'];
  if($result){
    $recipeid = mysql_insert_id();
    }
  $i = 0;
  while($i < sizeof($measurement)){
    $query = "INSERT INTO recipeItems (`userid`, `foodid`, `itemMeasurement`, `itemMeasurementUnit`, `recipeid`) VALUES (".$_SESSION['userid'].",".$foodid[$i].",".$measurement[$i].",'".$unitMeasurement[$i]."',".$recipeid[$i].")";
    mysql_query($query);
    $i++;
  }
}
?>

以下是$result:

    $sql = "INSERT INTO recipes (`userid`, `rname`) VALUES (".$_SESSION['userid'].",'".$recipeName."')";
$result = mysql_query($sql); 

跳过 mkaatman 指出在 PHP 中使用mysql_*()函数是一种不好的做法,让我们看看你的问题。

首先,您可以从任意形式循环发布值,如下所示:

<?php
foreach ($_POST as $key => $value) {
    //key is the lookup value
    //value is the actual posted value
}

如果不提供更多信息,我们无法为您提供更多帮助。

就您提供的代码而言,$result 在您提供的代码中没有定义,因此我们可以假设 if 语句永远不会执行,或者我们可以猜测它会执行。

如果执行 if 语句块,则mysql_insert_id()将不起作用,因为它只能在插入返回插入项的 ID,即必须在 mysql_query() 之后调用它。

此外,鉴于您正在从级联字符串中创建查询(这是非常糟糕的做法,除了远离mysql_*()函数之外,您还应该查看预准备语句),您将需要将任何字符串括在引号中。

除此之外,没有足够的信息来正确提供帮助,如果这没有帮助,您将需要提供更多代码。