我对 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_*()
函数之外,您还应该查看预准备语句),您将需要将任何字符串括在引号中。
除此之外,没有足够的信息来正确提供帮助,如果这没有帮助,您将需要提供更多代码。