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

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