使用JSON_SET()更新JSON doc的部分内容而不是设置整个doc新

时间:2016-08-08 13:25:52

标签: php mysql json

我想更新MySQL数据库表中的部分JSON文档。

数据库中的字段名称:jdata

问题

想要将其设置为jdata = '{_whatever_}', 因为我会松开钥匙。

需要保留现有密钥(例如key1key3) 并且只将key2设置为新的指定值999

JSON doc

{
  "calculation":{
    "key1": 100,
    "key2": 200,
    "key3": 300
  }
}

PHP / MySQL

$a = json_encode(['key2' => 999], JSON_UNESCAPED_SLASHES);
$sql =
"   UPDATE  svtr.auftrag
    SET     jdata = JSON_SET(jdata, '$.calculation', '{$a}')
    WHERE[...]
";
  

使用像这样的完整路径:JSON_SET(jdata, '$.calculation.key2', 999)这里没有选项,因为原始的JSON文档要复杂得多,我必须迭代许多键。可以想象它有30个键/值对,需要更新其中的29个。

希望任何人都能理解我的谣言......提前致谢!

0 个答案:

没有答案