将选择的JSON数据插入MySQLi

时间:2014-03-20 07:15:48

标签: php json

我第一次使用json文件,我需要将一些数据插入到MySQLi表中。 但是,我只需要row1和row5中的值。 下面是json树和我虚弱的尝试。

{
    'category1':'value1',
    'category2':'
        [
            {
               'row1':'value2'
               'row2':'value3'
               'row3':'value4'
               'row4':'value5'
               'row5':'value6'
            },
            {
               'row1':'value7'
               'row2':'value8'
               'row3':'value9'
               'row4':'value10'
               'row5':'value11'
            },
                   (...) x100        
        ]
}

$json=file_get_contents('/*url of the json file*/');
$json_object=json_decode($json);

foreach($json_object->category2 as $json_object)
{
    $needed_value1=$json_object->category2->row1; /*This is where I think my attempt breaks*/  
    $needed_value2=$json_object->category2->row5; /*down but I have no idea how to proceed.*/

    $query=mysqli_prepare($connection,'INSERT INTO table (column1,column2) VALUES (?,?)');  
    mysqli_bind_param($query,'ss',$needed_value1,$needed_value2);
    mysqli_stmt_execute($query);
    mysqli_stmt_close($query);
    mysqli_close($connection);
}

1 个答案:

答案 0 :(得分:0)

首先,您必须验证您的json以检查它是否有效。

要验证Json,您可以使用jsonlint(http://jsonlint.com/

然后假设你的json就像下面的$ x一样。

$ x =' {     " category1":" value1",     " category2":[         {             " row1":" value2",             " row2":" value3",             " row3":" value4",             " row4":" value5",             " row5":" value6"         },         {             " row1":" value2",             " row2":" value3",             " row3":" value4",             " row4":" value5",             " row5":" value6"         }     ] }&#39 ;;

解码你的Json $ x

$ JSON_OBJECT = json_decode($ x)的;

循环解码的json然后打印你的循环对象" $ json_object"从该对象中,您可以找到正确的类别节点。

foreach($ json_object-> category2 as $ json_object){

print_r($json_object);
echo $needed_value1 = $json_object->row1;
echo $needed_value2 = $json_object->row5;
echo $needed_value1 = $json_object->row1;

etc.....

}