关于原生sql以及php框架中的数据库方法

998 阅读3分钟

最近在使用原生sql将数据写入数据库的时候遇到了一个小问题,然后使用php框架中的数据库方法写入就没有问题。

这个让我多少对使用原生sql有了一些新的想法。

在我看来,在框架中使用原生sql,会让程序的执行速度加快。

你在使用框架的数据库方法的时候,框架底层执行的也是SQL,框架通过方法给你拼装的。

我先说下我遇到的问题:

Json在数据库中存储的格式如下:

[{"id":1,"title":"\u5f80\u91cc\u5934\u52a0\u56fe\u7247","score":10,"type":"image","mark":"aaaa","value":"https://www.mools.net/lims/api/laravel/storage/app/report/6559/49198/61201a381821c786d5df61ac9bb576a5.jpg"},{"id":2,"title":"wen ben","score":20,"type":"text","mark":"123,12121","value":"Qwqwqwq"},{"id":3,"title":"\u8868\u683c","score":30,"table":[["#","@","#@"],["#123","@123","123"],["@@","##","#@#"]],"type":"table","mark":"biaoge , mark\u4e0d\u597d\u7528","suanfa":"2121212121","value":[["Qq","AQQ","Qq"],["Qq","Qq","123"],["Qq","Qq","Qq"]]}]

中文是以这种unicode编码存储的,然后,我是用原生SQL将这个json字符串写入数据库的时候,数据库默认将字符串中的 \ 转义符给去掉了,存进数据库的数据变成了下面的样子:

[{"id":1,"title":"u5f80u91ccu5934u52a0u56feu7247","score":10,"type":"image","mark":"aaaa","value":"https://www.mools.net/lims/api/laravel/storage/app/report/6559/49198/61201a381821c786d5df61ac9bb576a5.jpg"},{"id":2,"title":"wen
ben","score":20,"type":"text","mark":"123,12121","value":"Qwqwqwq"},{"id":3,"title":"u8868u683c","score":30,"table":[["#","@","#@"],["#123","@123","123"],["@@","##","#@#"]],"type":"table","mark":"biaoge
, marku4e0du597du7528","suanfa":"2121212121","value":[["Qq","AQQ","Qq"],["Qq","Qq","123"],["Qq","Qq","Qq"]]}]

除了中文一切正常。

但是中文这部分,就显示不出来了。

但是在使用框架中封装的数据库方法的时候,框架的底层对存入数据库的数据有处理,就不会发生我使用原生SQL写入的时候的问题。

我之前一直是比较喜欢使用原生SQL,说什么执行速度那都是后话,主要是,我不需要学习每种框架封装的数据库方法,这个玩意,每个框架都不一样,学习成本还是比较高。再就是接手一个项目使用的是新的框架,也不会有太多时间去搞这些。

但是框架在设计的时候,通常是会考虑到对数据的一个处理的,这也是使用框架封装的数据库方法的一个优势。

我认为使用原生SQL的几个优点:

1:相对于使用框架封装的数据库方法,快。

2:学习成本相对较低,万物皆可SQL,上手快

框架封装数据库方法的优点:

1:对数据有完善的处理方法

2:就单一框架而言,数量的使用其封装的数据库方法,可以让开发变得更快

3:提供了统一的sql标准,万物的本质就是sql,那个玩意,真的是想怎么写就怎么写,对于能力残次不齐的开发项目组来说,使用框架封装的数据库方法能更好的统一sql的标准。

所以,我觉得,在某些方面,使用框架封装的方法可能相对使用原生SQL要好。

这篇文章大概就是分享一下,我关于使用原生sql遇到的问题的思考吧。

关于这个,你是怎么看的呢?

有好的建议,请在下方输入你的评论。

欢迎访问个人博客 guanchao.site

欢迎访问我的小程序:打开微信->发现->小程序->搜索“时间里的”