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

简介: 在框架中使用原生sql,会让程序的执行速度加快。你在使用框架的数据库方法的时候,框架底层执行的也是SQL,框架通过方法给你拼装的。

QQ图片20220426230723.jpg

最近在使用原生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遇到的问题的思考吧。


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



目录
相关文章
|
10月前
|
关系型数据库 MySQL 网络安全
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
通过本文的介绍,您可以系统地了解如何排查和解决PHP连接MySQL数据库失败及写锁问题。通过检查配置、确保服务启动、调整防火墙设置和用户权限,以及识别和解决长时间运行的事务和死锁问题,可以有效地保障应用的稳定运行。
400 25
|
NoSQL 关系型数据库 PHP
php连接数据库
要使用PHP连接PolarDB或MongoDB数据库,需先准备连接信息,并编写相应代码。对于PolarDB,需设置主机地址、端口、数据库名及凭据,使用`pg_connect`函数建立连接;而对于MongoDB副本集,需安装MongoDB PHP驱动,通过`MongoDB\Client`连接指定的副本集实例。请确保替换示例代码中的占位符为实际值,并正确配置副本集名称和主机信息。更多详细信息与示例代码,请参考相关链接。
287 74
|
SQL 关系型数据库 MySQL
php学习笔记-连接操作mysq数据库(基础)-day08
本文介绍了PHP中连接操作MySQL数据库的常用函数,包括连接服务器、设置字符集、关闭连接、选择数据库、结果集释放、获取影响行数以及遍历结果集等操作。通过书籍查询的实例演示了如何使用这些函数进行数据库操作,并提供了一个PHP操纵MySQL数据库的模板。
php学习笔记-连接操作mysq数据库(基础)-day08
|
SQL 关系型数据库 数据库连接
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别
本文介绍了PHP中PDO(PHP Data Objects)扩展的基本概念和使用方法。内容包括PDO类和PDOStatement类的介绍,PDO的简单使用,预定义占位符的使用方法,以及PDOStatement对象的使用。文章还讨论了绑定预定义占位符参数的不同形式,即bindValue和bindParam的区别。通过具体示例,展示了如何使用PDO进行数据库连接、数据查询、数据插入等操作。
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别
|
SQL 关系型数据库 MySQL
如何在PHP中连接到数据库?
在PHP中连接MySQL数据库常用的方法是MySQLi与PDO。MySQLi专为MySQL设计,支持面向对象及过程化编程,并提供预处理语句防止SQL注入。
147 1
|
关系型数据库 MySQL PHP
【PHP 开发专栏】PHP 连接 MySQL 数据库的方法
【4月更文挑战第30天】本文介绍了 PHP 连接 MySQL 的两种主要方法:mysqli 和 PDO 扩展,包括连接、查询和处理结果的基本步骤。还讨论了连接参数设置、常见问题及解决方法,如连接失败、权限和字符集问题。此外,提到了高级技巧如使用连接池和缓存连接信息以优化性能。最后,通过实际案例分析了在用户登录系统和数据管理中的应用。
909 1
|
关系型数据库 MySQL 数据库连接
PHP数据库驱动扩展与不同方式连接数据库方式技术详解
php的强大就是因为它有很多优质的扩展库!
239 0
PHP数据库驱动扩展与不同方式连接数据库方式技术详解
|
PHP 数据库
php连接数据库,及数据表增删改查
php连接数据库,及数据表增删改查
171 2
|
PHP 数据库
【PHP学习】—PHP连接数据库实现表单页面的验证功能(七)
【PHP学习】—PHP连接数据库实现表单页面的验证功能(七)
|
数据库连接 PHP 数据库
【PHP学习】—PHP连接数据库(六)
【PHP学习】—PHP连接数据库(六)