2011-12-14 13 views
0

を爆発、次のように呼ばれる:PHP配列は、私は、アレイの内部データを内破い

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

Iは、MySQLの内部行として各値がこのデータ入力を展開する必要があります。上記の配列は、1つの値、(今、私は三つの値を示すAM)または5つの値を3つの値を持つことができ 、と私は入力NULLにしたいいけない:そのような私は立ち往生しています今

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

としてこれです私のデータベースの中の値。 は...

は、SQLクエリを構築するために、配列の反復子を使用していないのはなぜ
+0

こんにちは、 配列に1つ以上の値があるかどうかを確認するテストを行う必要があります。それ以上の場合は、デリミタとして "、"を使用して爆発を使用し、データベースに挿入する一時配列を作成することができます –

答えて

0

単純なループが正常に動作しますが、データベースに複数のクエリを作るという欠点があります:DBの操作がより重要であるため

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

をPHPでクエリを構築するよりもボトルネックになるので、次のように1つのクエリの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 - ありがとう! –

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

爆発時に間違った使用 – ajreal

0

を、誰もが共有することができます任意の指導に感謝しますか?そうすることで、配列内の要素数だけ挿入することができます。

上記の回答と同様です。私たちは同時に答えていたと思います。あなたの主要な配列を想定

0

$dataです:

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

    foreach ($value as $v) 
    { 
     $sql = "INSERT INTO table(value) VALUES('$v')"; 
    } 
} 
関連する問題