我正在使用 JSON_REPLACE
来更新密钥的值,但是如果密钥不存在,我很难在更新它之前弄清楚如何创建它。
这就是我的查询的样子。
$query_update = "UPDATE `forms` SET `conf` = JSON_REPLACE(`conf`, '$.title', '$title') WHERE id='32'";
知道如何在同一个查询中做到这一点吗?
更新
感谢下面 Juan Eizmendi 和 Salman A 的评论,将 JSON_REPLACE
更改为 JSON_SET
解决了问题。
更新后的查询看起来像这样
$query_update = "UPDATE `forms` SET `conf` = JSON_SET(`conf`, '$.title', '$title') WHERE id='32'";
答案 0 :(得分:2)
您可以使用 JSON_SET
代替 JSON_REPLACE
,如果密钥不存在,它将插入或更新现有密钥:
SELECT JSON_SET('{}', '$.title', 'new title');
-- {"title": "new title"}
SELECT JSON_SET('{"title":"old title"}', '$.title', 'new title');
-- {"title": "new title"}