所以我在第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循环不起作用。逻辑上它是正确的。有任何想法吗?
答案 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”返回值。