2013-06-11 41 views
0

我有幾個複選框,我想要將它們的值插入到數據庫中,如果它們被選中。遍歷數組並將數據上傳到數據庫中的行

HTML: 
<input type="checkbox" id="m1" name="category[]" value="1"/> 
<input type="checkbox" id="m2" name="category[]" value="2"/> 
<input type="checkbox" id="m3" name="category[]" value="3"/> 
<input type="checkbox" id="m4" name="category[]" value="4"/> 
<input type="checkbox" id="m5" name="category[]" value="5"/> 

我可以打印出類別數組,並根據我點擊的複選框給出正確的值。我似乎無法循環他們在我的數據庫中插入多行。

插入數據庫後,數據庫應該是這樣的:

| USERID | MACHINEID | 
---------------------- 
|  1 |   1 | 
|  1 |   2 | 
|  1 |   3 | 

如果我只單擊第3個複選框。

我的想法是這樣的:

$array_zone = $_POST['category']; 
if(isset($_POST['category'])) 
{ 
for($i = 0; $i < count($array_zone); $i++) 
{ 
mysql_query("INSERT INTO `userPlanDetail` (`user_id`, `machine_id`) VALUES ('$user_id', ' $array_zone[$i]')"); 
} 
} 
+0

不正確的邏輯。 $ _POST可能有數據,但類別部分可能爲空。你的示例代碼也容易受到[SQL注入攻擊](http://bobby-tables.com)的影響,所以不要使用此代碼。 –

+0

感謝您的信息,但現在我只是想獲得輸入到數據庫中的複選框。在此之後加以保護很簡單 – TheNameHobbs

+0

只是想提一提,在直接將它們放入查詢之前,應該將值轉義。查找SQL注入。 –

回答

0

如果你的設備ID列,因此它有可能是在空間「$ array_zone [$ i]」是造成你的麻煩一個int。你在檢查mysql錯誤嗎?

+0

目前我不檢查錯誤。我剛剛做了,它說外鍵約束失敗。 user_id和machine_id都是外鍵 – TheNameHobbs

1

試試這個,看起來你,你有白色的空間問題

mysql_query("INSERT INTO `userPlanDetail` (`user_id`, `machine_id`) VALUES ('$user_id', '$array_zone[$i]')"); 

還,如果有多個倒不如insering他們這樣

mysql_query("INSERT INTO `userPlanDetail` (`user_id`, `machine_id`) 
VALUES ('$user_id', '$array_zone[$i]'), ('$user_id', '$array_zone[$i++]')"); 

他們會更快插入單個語句

這裏尋找更多的信息

Multiple mysql INSERT statements in one query php

還要進行測試,mysql_ *還是很不好的做法。