用于Post数组的PHP For循环

时间:2012-09-19 09:57:40

标签: php syntax-error

所以我在第2页上有一个动态表,用户可以根据需要添加任意数量的条目。提交3页后,获取所有信息就好了。问题是我通过数组的循环迭代不起作用。这是代码:

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 个答案:

答案 0 :(得分:3)

你忘记了$指向变量i

试试这个:

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

答案 1 :(得分: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)");

应该在循环之外!

答案 2 :(得分: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];

答案 3 :(得分:1)

应该是:

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

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