2011-12-14 124 views
0

我的陣列的內部內爆數據,稱爲以下各項:PHP陣列爆炸

["Levels_SanctionLevel_array"]=> 
string(14) "IR01,IR02,IR03" 

我需要爆炸這些數據,並輸入每個值作爲MySQL的內部的行。如

pri_id value 
--------------- 
01  IR01 
02  IR02 
03  IR04 

現在我在哪裏被陷是這樣的: 上面列出的陣列可以具有1個值,3個值(現在我示出了三個值)或5個值,並且我不想輸入NULL數據庫內的值。 感謝任何指導,任何人都可以分享...

+0

嗨, 你應該做一個測試來檢查數組中是否只有一個或多個值。如果它不止是你可以使用爆炸與「,」作爲分隔符並創建一個臨時數組插入到您的數據庫 – 2011-12-14 17:53:55

回答

0

的簡單循環正常工作,但有使多個數據庫查詢的缺點:

$str = "IR01,IR02,IR03"; 
$vals = explode(',', $str); 
foreach ($vals AS $value) { 
    // insert into database 
} 

由於DB操作更顯著瓶頸比在PHP中構建查詢,我會選擇爲單個查詢生成SQL代碼,如下所示:

$str = "IR01,IR02,IR03"; 
$vals = explode(',', $str); 

$query = 'INSERT INTO my_data VALUES '; 

foreach ($vals as $value) { 
$query .= "('', '".$value."'),"; 
} 

$query = rtrim($query, ','); 

// insert into database 
+0

@ rdlowery - 謝謝! – 2011-12-14 18:05:13

3
$data = explode(',',$your_string); 
foreach ($data AS $value) { 
    // INSERT INTO DB 
} 
+2

錯誤的用法爆炸 – ajreal 2011-12-14 17:56:09

0

你爲什麼不使用迭代器陣列上構建SQL查詢?這樣你只能插入數組中的元素。

像上面的答案一樣。我想我們在同一時間回答。

0

假設你的主要數組是$data

foreach ($data as $values) 
{ 
    $value = explode(",", $values); 

    foreach ($value as $v) 
    { 
     $sql = "INSERT INTO table(value) VALUES('$v')"; 
    } 
}