2011-12-14 168 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')"; 
    } 
}