如何循环动态创建的表单?

时间:2016-03-09 04:56:23

标签: php loops

我对php很新,我想知道如何循环一个动态创建的表单,以便我可以将输入到表单中的任何内容输入到我的数据库中 - 所以我的代码看起来有问题。因此,measurement和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); 

1 个答案:

答案 0 :(得分:0)

移过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()将无效,因为它只能返回已插入的项目 AFTER 的ID,即它会有在mysql_query()之后调用。

另外,假设您正在使用连接字符串创建查询(这是一种非常糟糕的做法,除了远离mysql_*()函数,您还应该查看预备语句),您需要包装任何内容是引号中的字符串。

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