0

所以我在第 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();
}

所以当我这样做的时候

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

它向我显示了正确的数字,因此如果用户在第 2 页上添加了 3 行,那么回显的值应该是 3,就是这样。当我做:

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

然后它适当地给出第一行的名字。我可以用任何数字替换 0,只要它在界限内,并且它是正确的。但由于某种原因,当我这样做时

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

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

4

4 回答 4

3

你忘了 $ 指向变量 i

试试这个:

echo $_POST["fname_new"][$i];
于 2012-09-19T09:58:49.037 回答
3

除了给出的所有答案之外,您还错过了准备好的查询这一点。您准备一次查询并多次使用它

所以:

  $stmt = $link -> prepare(
     "INSERT INTO Conference (`First Name`, `Last Name`, `Phone`, `Email`, `Ethnicity`)
      VALUES (:first_new, :last_new, :phone_new, :email_new, :ethnicity_new)");

应该在循环之外!

于 2012-09-19T10:01:16.170 回答
2

你错过了一个$

$fname_new = $_POST["fname_new"][$i];
$lname_new = $_POST["lname_new"][$i];
$phone_new = $_POST["phone_new"][$i];
$email_new = $_POST["email_new"][$i];
于 2012-09-19T09:59:17.390 回答
1

应该:

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

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

于 2012-09-19T09:59:24.463 回答