2010-10-03 38 views
0

幾個小時前我問了一個問題。Codeigniter在數組中插入值

如何從表單中的字段名稱數組插入到Codeigniter中的SQL數據庫中。

<tr> 
<td><input type="text" name="user[0][name]" value=""></td> 
<td><input type="text" name="user[0][address]" value=""><br></td> 
<td><input type="text" name="user[0][age]" value=""></td> 
<td><input type="text" name="user[0][email]" value=""></td> 

<tr> 
<td><input type="text" name="user[1][name]" value=""></td> 
<td><input type="text" name="user[1][address]" value=""><br></td> 
<td><input type="text" name="user[1][age]" value=""></td> 
<td><input type="text" name="user[1][email]" value=""></td> 
</tr> 
..........//so on 

這是最好的答案我

foreach($_POST['user'] as $user) 
{ 
    $this->db->insert('mytable', $user); 
} 

現在我想通過從用戶會話數據生成到這個陣列+像當前其他幾個值的ID時間

是否可以調整上述解決方案?

The Previous Discussion Here

回答

0
foreach($_POST['user'] as &$user) 
{ 
    $user['additional_data'] = $_SESSION['additional_data']; 
    $user['current_time'] = time(); 
    $this->db->insert('mytable', $user); 
} 

注意&取代我$ & $ user這是一個通過引用傳遞的允許在foreach循環中對數組進行操作的傳遞。如果以後引用用戶請記住取消設置($ user)以刪除對$ _POST ['user']數組最後一個元素的引用。

+0

現貨!這似乎是對我的陰謀。我嘗試了所有能夠在我身上拋出各種錯誤的變體,然後有人@ SO在毫秒內完成它。 :-) 謝謝。 – 2010-10-03 22:06:56

+0

其實,看着它,你可以忽略通過引用(&before&$ user)傳遞,它應該仍然有效。按引用傳遞只有在代碼中的任何其他位置使用$ _POST ['user']數組時纔有用。 – Gazler 2010-10-03 22:09:12

+0

是的,我不必使用'&'。 – 2010-10-03 22:11:02

0

我不知道如果我失去了一些東西,但你不能只刪除foreach並建立您這樣的代碼:

$var1 = $_POST['user_var1'] * 3 + 1/5; 
$this->db->insert('mytable', $var1); 
$var2 = gettime(); 
$this->db->insert('mytable', $var2); 
.... 

(其中GETTIME()應該與任何用於獲取時間的PHP命令,再加上也許格式化函數)

+0

表單字段是動態生成的。這就是爲什麼我需要一個循環。 – 2010-10-03 22:21:38