2011-07-18 6 views
0

ラジオボタンの値をたくさんデータベースに入れる必要があるので、300個の値を処理ページにポストします。 。PHPで名前と値を取得するforeachループで長い文字列を作成する

各ラジオボタンの値と名前(投稿時)を区別して、データベースに挿入できるようにします。これは私のコードです:(多分、私はジャグ配列が必要?)

VALUE:

foreach ($_POST as $key => $value) 
{ 
$value = $value.','; 
} 

POSTのNAME:???

foreach ($_POST[name]?? as ??? => $postname) 
{ 
$postname = $postname.','; 
} 

は、その後、私は値と名前を区別し、データベースに正しい列に配置する必要があります。

mysql_query("INSERT INTO tabke SELECT '$longstring' or die(mysql_error());; 
+1

あなたのテーブル 'tabke'構造は何ですか? –

+0

'ギザギザの配列'?それは何ですか? –

答えて

2

SELECTを使用して挿入する理由がわからないのは、already existing table dataから挿入するためです。ただし、1つの文で複数のVALUESを挿入することはできます。あなたは何をする必要があるでしょう:

// you should filter out values from your $_POST... 
$ignoredFields = array('submit', ...); 
$fields = array_intersect_key($_POST, array_flip($ignoredFields)); 

$values = array(); 
foreach ($fields as $key => $value) { 
    $key = mysql_real_escape_string($key); 
    $value = mysql_real_escape_string($value); 
    $values[] = "'{$key}', '{$value}'"; 
} 

// creation the insert string 
$query = 'INSERT INTO `tabke` (`key`,`value`) VALUES ('.implode(,'),(', $values).')'; 
$result = mysql_query($query); 

** **:私はあなたのテーブルtabkeルック限り、あなたのクエリがmax_allowed_packetを拡張しないよう

+---------+------------------+------+-----+---------+----------------+ 
| Field | Type    | Null | Key | Default | Extra   | 
+---------+------------------+------+-----+---------+----------------+ 
| id  | int(10) unsigned | NO | PRI | NULL | auto_increment | 
| key  | varchar(64)  | NO |  | NULL |    | 
| value | text    | NO |  | NULL |    | 
+---------+------------------+------+-----+---------+----------------+ 

のようなもの、この意志と仮定しますうまく動作します。あなたのデータがそのサイズを超える場合は、単にarray_chunkを使用してチャンクを繰り返し、各チャンクにINSERTを作成してください。

+0

私は...の代わりに何を入れますか? – tdjfdjdj

+0

フォームから無視する必要があるフィールド。たとえば、リセットボタン( 'name =" reset ")とサブミットボタン(' name = "submit")がある場合、 '$ ignoredFields = array( 'reset'、 'submit'); '。例えば。 –

0

$キーになるだろうが、唯一の異なるごとにポストがあるだろうラジオ "グループ"、あなたはSQLインジェクションのためのあなたの入力を消毒する必要があります。

関連する問題