2012-09-19 71 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