用于Post数组的循环的PHP

用于Post数组的循环的PHP,php,syntax-error,Php,Syntax Error,因此,我在第2页上有一个动态表,用户可以在其中添加任意数量的条目。提交后的3页是得到所有的信息刚刚好。问题是我在数组中的for循环迭代不起作用。代码如下: for($i = 0; $i < sizeof($_POST["fname_new"]); $i++) { $fname_new = $_POST["fname_new"][i]; $lname_new = $_POST["lname_new"][i]; $phone_new = $_POST["phone_ne

因此,我在第2页上有一个动态表,用户可以在其中添加任意数量的条目。提交后的3页是得到所有的信息刚刚好。问题是我在数组中的for循环迭代不起作用。代码如下:

for($i = 0; $i < sizeof($_POST["fname_new"]); $i++) {
    $fname_new = $_POST["fname_new"][i];
    $lname_new = $_POST["lname_new"][i];
    $phone_new = $_POST["phone_new"][i];
    $email_new = $_POST["email_new"][i];
    $ethnicity_new = $_POST["ethnicity_new"][i];
    $stmt = $link -> prepare("INSERT INTO Conference (`First Name`, `Last Name`, `Phone`, `Email`, `Ethnicity`) VALUES (:first_new, :last_new, :phone_new, :email_new, :ethnicity_new)");
    $stmt->bindParam(':first_new', $fname_new);
    $stmt->bindParam(':last_new', $lname_new);
    $stmt->bindParam(':phone_new', $phone_new);
    $stmt->bindParam(':email_new', $email_new);
    $stmt->bindParam(':ethnicity_new', $ethnicity_new);
    $stmt->execute();
}
它向我显示了正确的数字,因此,如果用户在第2页上添加了3行,那么回显的值应该是3,就是这样。当我这样做时:

echo $_POST["fname_new"][0];
然后从第一行适当地给出第一个名称。我可以用任何数字替换0,只要它在边界内,并且是正确的。但出于某种原因,当我这么做的时候

echo sizeof($_POST["fname_new"]);
echo $_POST["fname_new"][i];

它不打印任何东西。我不知道为什么这个for循环不起作用。从逻辑上讲,这是正确的。有什么想法吗

您忘记了$指向变量i

试试这个:

echo $_POST["fname_new"][$i];

您缺少一个
$

$fname_new = $_POST["fname_new"][$i];
$lname_new = $_POST["lname_new"][$i];
$phone_new = $_POST["phone_new"][$i];
$email_new = $_POST["email_new"][$i];
应该是:

$_POST["fname_new"][$i];

您传递的是文字“i”(很可能取决于PHP版本),而不是变量$i。因此,它将尝试返回键索引为“i”的值,该值未设置。

除了给出的所有答案外,您还没有准备好查询。您准备一个查询一次,然后多次使用它

因此:


应该在循环之外

那包裹呢?那些人也会在外面吗?在这种情况下他们会的。为了清楚起见,我把它们放在循环中。
  $stmt = $link -> prepare(
     "INSERT INTO Conference (`First Name`, `Last Name`, `Phone`, `Email`, `Ethnicity`)
      VALUES (:first_new, :last_new, :phone_new, :email_new, :ethnicity_new)");