使用PHP和JSON将数组插入MySQL数据库

时间:2012-07-22 18:40:04

标签: php mysql json codeigniter

我希望在数据库mysql中插入以下日期值作为json值,如下例所示:

我希望它们在数据库表行中:

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

DEMO: 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);
?>

1 个答案:

答案 0 :(得分:2)

我不建议将此格式数据存储在数据库中,但如果您想以这种方式保存,则必须进行一些更改:

更改表单:

您使用的是非固定数量的字段,您可以使用以下结构:

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

在php中,您可以将static=NUMBER的信息作为$_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(此处演示)