【问题标题】:Get values from jSon array and do sql insert从json数组中获取值并执行sql插入
【发布时间】:2012-06-06 02:32:03
【问题描述】:

这是我的数组;

    $json = '
{
    "1":{
        "Device_ID":"a9a3346be4375a92",
        "Date":"2012-05-31",
        "Time":"15:22:59",
        "Latitude":"51.4972912",
        "Longitude":"0.1108178"
    },
    "2":{
        "Device_ID":"a9a3346be4375a92",
        "Date":"2012-05-31",
        "Time":"15:52:07",
        "Latitude":"51.4988357",
        "Longitude":"0.1222859"
    }
}';

解码如下:$array = json_decode($json);

我现在正在尝试将上述数组中的所有 $items 插入数据库;所以我想将 1 内的所有数据存储在一条记录中,并在第二条记录中存储 2 内的所有值。

我的想法是我永远不会知道数组的大小,所以它可能有 100 个 $items。

如何做到这一点?

【问题讨论】:

  • 您应该使用 json_decode($json, true) 将其转换为关联数组,然后使用 foreach 循环遍历 $array 提取您想要的值并相应地运行您的 sql

标签: php sql json


【解决方案1】:

试试这样的:

$item_array = json_decode($json, true);
$insert_query = "INSERT INTO items (column1,column3) VALUES ";
$i = 0;
$array_count = count($item_array);

foreach($item_array as $item) {
 $end = ($i == $array_count) ? ';' : ',';
 $insert_query .= "('".$item['date']."','".$item['device_id']."')" . $end;
 $i ++;
}

mysql_query($insert_query);

生成的查询将类似于:

INSERT INTO items (column1,column3) VALUES ('asdf',123),('asdfe',1234);

【讨论】:

  • 这取决于他使用的是什么 SQL,对吧?我不认为 INSERT 语法适用于每个 SQL
  • 感谢上面的这个,它似乎已经让我进入了一个合理的状态,但是它似乎没有发布我会试着弄清楚,它是 mysql btw。
  • 当我使用你的代码时,它工作得很好,但是它没有添加分号,它添加了一个逗号,但是我只是删除了逗号并添加了一个分号
  • 添加分号修改: $end = ($i == $array_count-1) ? ';' : ',';
猜你喜欢
  • 2017-09-28
  • 1970-01-01
  • 2021-09-18
  • 2021-12-08
  • 2021-08-05
  • 1970-01-01
  • 2014-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多