我有一个名为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
的形式显示为通知。我已计划如何执行此操作,但无法将其插入列中。那么,我该怎么做呢?谢谢!
答案 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)
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