1

次の例のように、次の日付値をデータベース mysql の json 値として挿入します。

データベーステーブルの行のようにしたい:

     Column static  |                     Column data_1
Row1:      12       |  ["1111111111", "2222222222", "3333333333", "4444444444"]
Row2:      34       |  ["5555555555", "6666666666", "7777777777"]
Row1:      56       |  ["8888888888", "9999999999"]

デモ: http://codepad.viper-7.com/WzGz3p

<form method="post">
<input name="static[]" value="12">
<input name="data_1[]" value="1111111111">
<input name="data_1[]" value="2222222222">
<input name="data_1[]" value="3333333333">
<input name="data_1[]" value="4444444444">

<input name="static[]" value="34">
<input name="data_1[]" value="5555555555">
<input name="data_1[]" value="6666666666">
<input name="data_1[]" value="7777777777">

<input name="static[]" value="56">
<input name="data_1[]" value="8888888888">
<input name="data_1[]" value="9999999999">

<input type="submit">
</form>

真に機能しない私のPHPコード:

<?php
$data = array();
$data_1 = $_POST['data_1'];
$static = $_POST["static"];
foreach($static as $idx=>$val){
    $data[] = array(
              'static' => $static[$idx],
              'data_1' => json_encode(Array($data_1[$idx*2],$data_1[$idx*2+1]))             
                   );
}
//$this->db->insert_batch('MyTable', $data);

echo "<pre>";
print_r($data);
?>
4

1 に答える 1

2

この形式のデータをデータベースに保存することはお勧めしませんが、この方法で保存する場合は、いくつかの変更を行う必要があります。

フォームを変更します。

固定数以外のフィールドで作業している場合は、次のような構造を使用できます。

<input name="static[NUMBER]" value="XXX">
<input name="data_NUMBER[1]" value="YYYYY">

static=NUMBERそしてphpであなたはとしての情報を得ることができます$_POST["data_".NUMBER]

<form method="post">
<input name="static[1]" value="12">
<input name="data_1[0]" value="1111111111">
<input name="data_1[1]" value="2222222222">
<input name="data_1[2]" value="3333333333">
<input name="data_1[3]" value="4444444444">

<input name="static[2]" value="34">
<input name="data_2[0]" value="5555555555">
<input name="data_2[1]" value="6666666666">
<input name="data_2[2]" value="7777777777">

<input name="static[3]" value="56">
<input name="data_3[0]" value="8888888888">
<input name="data_3[1]" value="9999999999">

<input type="submit">
</form>

そしてphpを変更します:

foreach($static as $idx=>$val){
    $data_=$_POST["data_".$idx];
    $data[] = array(
        'static' => $static[$idx],
        'data_1' => json_encode($data_)             
    );
}

http://codepad.viper-7.com/i2xvKC(デモはこちら)

于 2012-07-22T18:57:49.997 に答える