对存入mysql数据库里的json数据进行操作的理解

本文探讨了在大型项目中使用JSON格式存储数据的优点,包括灵活性高、减少字段修改需求和简化查询过程。同时,文章提供了json_encode和json_decode函数的具体使用示例。

我们都知道在一些大的商城项目或者需要用到大量数据的项目中,数据库中表结构非常复杂,表和表之间的映射更是繁琐用主外键确实可以处理这种复杂的联系,但是主外键在修改、删除数据时,有时会很麻烦。
这个时候就有人提出在数据库中直接存入json数据,这样做不但可以大大在保证表和表之间联系的密切,而且更可以省去数据库中大量字段的产生,减少数据库的负载和

有人提出理论,就有人用代码实现!!
那么有几点问题我们需要去思考一下
用json方式保存数据入库,有什么优点
1.想增加或减少字段时,不必频繁地去修改数据库,尤其 是使用三层框架,改一个字段要改好多内容的。(如果你在数据库中进行统计的话,最好还是遵循 3NF 原则, 直接存 json 基本上不符合 1NF 。如果你的这个数据只是在web 上用 js 来处理的话,还会是个不错的选择)
2.在查询相关信息时不必用联合查询,避免使用主外键,(主外键在修改、删除数据时,有时会很麻烦的)
使用方法
具体思路
所有的对json一切操作都在前端进行,返回给后端的是有数据库表字段的json数据,所以后端只负责对数据库表进行操作
相关函数json_encode和json_decode
//json_encode顾名思义json编码,就是将数组或对象,编码成json字符串的函数
$arr[‘a’] = 1;
arr[′b′]=2;vardump(jsonencode(arr['b'] = 2; var_dump(json_encode(arr[b]=2;vardump(jsonencode(arr));
class obj { }$obj = new obj;
$obj->a = 1;
obj−>b=2;vardump(jsonencode(obj->b = 2; var_dump(json_encode(obj>b=2;vardump(jsonencode(obj));
//这两条打印结果是一样的//string ‘{“a”:1,“b”:2}’ (length=13)
//而json_decode刚好相反,是将json字符串转成数组或对象//因为两组打印结果一样,所以我们任意取一组继续下面的实验jsonstr=jsonencode(json_str = json_encode(jsonstr=jsonencode(obj);
//现在使用json_decode来对这组json格式的字符串进行操作//第一次不加第二参数var_dump(json_decode(jsonstr));//打印结果为对象//object(stdClass)[3]//public′a′=>int1//public′b′=>int2//第一次加第二参数vardump(jsondecode(json_str)); //打印结果为对象//object(stdClass)[3]// public 'a' => int 1// public 'b' => int 2 //第一次加第二参数var_dump(json_decode(jsonstr));////object(stdClass)[3]//publica=>int1//publicb=>int2//vardump(jsondecode(json_str,true));//打印结果为数组//array (size=2)// ‘a’ => int 1// ‘b’ => int 2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值