2012-09-19 70 views
0

所以我有第2页那里,因为他们希望用户可以添加尽可能多的项目上动态表。提交3页后得到的所有信息都很好。问题是我通过数组的循环迭代无法正常工作。下面的代码:PHP 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"]); 

它显示我正确的号码,所以如果有3行,用户添加的第2页上则呼应的值应该是3,它是。当我这样做时:

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

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

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

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

+0

它应该是$我不是我... – Surace

回答

3

你忘了$指向变量i

试试这个:

echo $_POST["fname_new"][$i]; 
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]; 
1

应该是:

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

您传递文字“我”(最有可能的,依赖于PHP版本),而不是变量$ I。所以它将尝试返回值为'i'的键索引,该索引未设置。

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)"); 

应该是循环之外!

+0

怎么样的结合?那些也可以在外面? – Richard

+1

在这种情况下,他们可以。为了清楚起见,我将它们留在循环中。 – JvdBerg