在json列中插入json

时间:2018-07-16 06:51:11

标签: javascript php json

我有一个名为users的数据库表,它有一个名为user-json的列。我有user-json来存储有关我的用户的更多信息。 user-json的样板如下:

{
"id":1,
"friends":[],
"posts":[],
"messages":[],
"notifications":[],
"pin":""
}

现在,我必须在通知中插入或update JSON。我将新的json插入其中​​,如下所示:

{
"title": "A user commented on your photo",
"user_id": 1,
"post_id": 3,
"comment_id": 13
}

然后,我将在用户的仪表板中以一些css的形式显示为通知。我已计划如何执行此操作,但无法将其插入列中。那么,我该怎么做呢?谢谢!

3 个答案:

答案 0 :(得分:0)

在检索数据后,您可以将其推送到通知数组并更新表中的现有数据

const jsonData = {
"id":1,
"friends":[],
"posts":[],
"messages":[],
"notifications":[],
"pin":""
}

const notification = {
"title": "A user commented on your photo",
"user_id": 1,
"post_id": 3,
"comment_id": 13
}

jsonData.notifications.push(notification);

console.log(jsonData);

// Update field of jsonData in mysql

答案 1 :(得分:0)

//get your data in your column user-json, then convert to JSON obj
//........
// data is a String
var user = JSON.parse(data);

//your have a notification obj like this
var notification = {
   "title": "A user commented on your photo",
   "user_id": 1,
   "post_id": 3,
   "comment_id": 13
};

//add notification
user.notifications.push(notification);

 // update this user in your database
 var userUpdate = JSON.stringify(user);

 //......update

答案 2 :(得分:0)

ANSI SQL不支持

JSON,因此修改JSON的方式将取决于您使用的数据库服务器类型。如果您使用的是足够新的MySQL版本,则如果user-json字段已正确设置为JSON字段类型,则以下数据库查询会将条目添加到ID为1的对象的notifications属性中。

UPDATE `users` 
   SET `user-json`=
       JSON_SET(
            `user-json`,
            '$.notifications',
            JSON_MERGE_PRESERVE(
                JSON_EXTRACT(`user-json`,'$.notifications'),
                '{
                  "title": "A user commented on your photo",
                  "user_id": 1,
                  "post_id": 3,
                  "comment_id": 13
                 }'))  
WHERE JSON_EXTRACT(`user-json`,'$.id')=1

附加的条目是问题中定义的条目。

{
    "title": "A user commented on your photo",
    "user_id": 1,
    "post_id": 3,
    "comment_id": 13
}

MySQL参考手册提供了有关使用JSON的更多信息。

https://dev.mysql.com/doc/refman/8.0/en/json.html

PHP手册提供了使用PHP编写代码以将数据作为准备好的语句插入所需的信息。

http://php.net/manual/en/mysqli.quickstart.prepared-statements.php