为了账号安全,请及时绑定邮箱和手机立即绑定

如何用json数组更新mysql?

如何用json数组更新mysql?

PHP
撒科打诨 2022-12-11 16:33:05
我想在我的服务器上进行 cron 作业以每 10 分钟保存一次我的 json 数组(我想每 10 分钟更新一次 mysql 表)问题是我真的有 nasted 数组,如果没有你的帮助,我现在很难独自保存!这是 json 数组:{"firstname":{"eur":14.27,"e":0.00612979},"lastname":{"eur":0.18709,"e":2.655e-05},"middlename":{"eur":617.26,"e":1.0}}我的表包含以下行:名称(这是示例的名称-> 名字)所以我想更新行,其中表名称值与我的示例中的“名字”或“姓氏”或“中间名”相同。我还有两行包含“eur”和“e”行。我必须将 json 数组中的值输入到示例中的同一行。我知道它不好解释了我想要什么所以我会尝试更好的。在我的 SQL 中,我有几行:(名称已经写入且必须保持不变)名称 - EUR - E我想每 10 分钟更新一次 EUR 和 E 的值,其中来自 sql 的名称与数组数据中的名称相同。这是我不工作的 PHP 代码:$filename = "JSON-FILE-LINK";$data = file_get_contents($filename);  echo $data;非常感谢社区!编辑:我打赌 sql 代码一定是这样的:UPDATE names SET eur = $eur, e = $e, ... WHERE name = $firstname。Firstname 是每个对象的名字。而 eur 和 e 是唯一必须更改的值。如何将json数据填充到sql变量是我现在最大的问题。
查看完整描述

1 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

这是一个演示。我在 MySQL 的测试模式中创建了一个表:


mysql> use test;

mysql> create table mytable (name varchar(20), eur numeric(9,2), e numeric(9,2));

我编写了一些 PHP 以使用json_decode()将 JSON 解码为关联数组,然后使用键和值插入到我创建的 MySQL 表中。


<?php


$pdo = new PDO('mysql:host=127.0.0.1;dbname=test', 'root', 'xxxx');

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


$data = '{"firstname":{"eur":14.27,"e":0.00612979},"lastname":{"eur":0.18709,"e":2.655e-05},"middlename":{"eur":617.26,"e":1.0}}';


$sql = "INSERT INTO mytable (name, eur, e) VALUES (?, ?, ?)";

$stmt = $pdo->prepare($sql);


foreach(json_decode($data, true) as $name => $values) {

    $stmt->execute([$name, $values['eur'], $values['e']]);

}

我在我的 bash 命令行中运行了 PHP。


php json-demo.php 

下面是显示结果的 SQL 查询:


mysql> select * from mytable;

+------------+--------+------+

| name       | eur    | e    |

+------------+--------+------+

| firstname  |  14.27 | 0.01 |

| lastname   |   0.19 | 0.00 |

| middlename | 617.26 | 1.00 |

+------------+--------+------+

对于它的价值,您显示的 JSON 示例不是 JSON 数组,它是一个 JSON 对象。


花括号内的键/值{ }对使它成为一个对象。


数组是方括号内以逗号分隔的列表[ ]。


查看完整回答
反对 回复 2022-12-11
  • 1 回答
  • 0 关注
  • 177 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信