实现PHP框架系列文章(6)mysql数据库方法


Posted in PHP onMarch 04, 2016

实现一个mysql数据库封装需要考虑的问题

1.使用方便性

采用直接sql语句操作方式。只要会写sql语句,那么将没有其他学习成本。

uctphp框架提供的dba辅助封装类,用会之后将爱不释手。

使用前需要显示初始化并连接到数据库吗,当然不需要。

直到执行第一条sql语句之前,都不会去连接数据库,甚至不会new一个db对象。

dba将会在合适的时机去连接数据库并执行初始化字符编码操作。

查询语句。不需要new一个查询构造器也不提供链式操作方式,那样复杂且低效。

dba提供了以下的查询辅助函数。

//读一个值
Dba::readOne($sql);
//读一行
Dba::readRowAssoc($sql);
//读所有行
Dba::readAllAssoc($sql);
//读所有行的第一列
Dba::readAllOne($sql);
//在实际业务场景中,经常会有分页读取部分数据的情况。
//只要一个函数即可返回指定页码的数据内容和数据总条数
Dba::readCountAndLimit($sql, $page, $limit);

ps:以上部分函数可以提供一个map函数对返回数组的每一行进行加工处理。

写语句。为什么要区分read和write呢,显然可以扩展做到控制读写分离,双写等功能。

在有各种云数据库和数据库中间件的今天,在数据库层实现是更好的选择。

Dba::write($sql);
/* 直接插入或更新kv形式的array数组
会自动对value进行转义,也支持array类型的值。
如果自己写sql语句要注意使用addslashes或mysql_real_escape_string来保证安全
*/
Dba::insert($table, $insert); 
Dba::update($table, $update, $where);
/*
对批量插入数据有更高的效率
当然过多的行数应该用array_chunk来分批插入。
*/
Dba::insertS($table, $inserts);

2. 事务

使用pdo支持事务

Dba::beginTransaction();
Dba::commit();
Dba::rollBack();

3. 长时间运行

在一些需要长时间运行的场景如swoole服务,后台worker等,可能会出现数据库连接超时的情况。

当发现数据库连接超时,dba将会自动尝试重连。

以上内容是小编给大家介绍的PHP框架系列文章(6)mysql数据库方法,希望对大家有所帮助!

PHP 相关文章推荐
详细介绍PHP应用提速面面观
Oct 09 PHP
php函数的常用方法及注意之处小结
Jul 10 PHP
PHP防CC攻击实现代码
Dec 29 PHP
php中过滤非法字符的具体实现
Oct 29 PHP
关于php支持分块与断点续传文件下载功能代码
May 09 PHP
详解WordPress中简码格式标签编写的基本方法
Dec 22 PHP
php版微信公众号自定义分享内容实现方法
Sep 22 PHP
php实现简单加入购物车功能
Mar 07 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
May 11 PHP
PHP convert_cyr_string()函数讲解
Feb 13 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
Apr 23 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
Oct 20 PHP
Codeigniter中集成smarty和adodb的方法
Mar 04 #PHP
PHP常用技巧汇总
Mar 04 #PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
Mar 03 #PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
Mar 03 #PHP
CodeIgniter针对数据库的连接、配置及使用方法
Mar 03 #PHP
CodeIgniter表单验证方法实例详解
Mar 03 #PHP
PHP6新特性分析
Mar 03 #PHP
You might like
《神奇女侠:血脉》神力女超人大战犯罪公司
2020/04/09 欧美动漫
IIS环境下快速安装、配置和调试PHP5.2.0
2006/12/17 PHP
WAMP环境中扩展oracle函数库(oci)
2015/06/26 PHP
Twig模板引擎用法入门教程
2016/01/20 PHP
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
2017/07/03 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
解决laravel 出现ajax请求419(unknown status)的问题
2019/09/03 PHP
网页自动刷新,不产生嗒嗒声的一个解决方法
2007/03/27 Javascript
jquery autocomplete自动完成插件的的使用方法
2010/08/07 Javascript
jquery自动将form表单封装成json的具体实现
2014/03/17 Javascript
如何将php数组或者对象传递给javascript
2014/03/20 Javascript
js实现多选项切换导航菜单的方法
2015/02/06 Javascript
jquery移动端TAB触屏切换实现效果
2020/12/22 Javascript
js跨域资源共享 基础篇
2016/07/02 Javascript
dul无法加载bootstrap实现unload table/user恢复
2016/09/29 Javascript
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
2020/09/10 Javascript
[46:27]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第一局
2016/03/02 DOTA
Python实现随机生成有效手机号码及身份证功能示例
2017/06/05 Python
python下载文件记录黑名单的实现代码
2017/10/24 Python
利用Tkinter(python3.6)实现一个简单计算器
2017/12/21 Python
Python Django Cookie 简单用法解析
2019/08/13 Python
python中struct模块之字节型数据的处理方法
2019/08/27 Python
python之生成多层json结构的实现
2020/02/27 Python
CSS3 透明色 RGBA使用介绍
2013/08/06 HTML / CSS
可口可乐广告词
2014/03/20 职场文书
办公室打字员岗位职责
2014/04/16 职场文书
酒店总经理岗位职责范本
2014/08/08 职场文书
2014购房个人委托书范本
2014/10/12 职场文书
2014年纪检工作总结
2014/11/12 职场文书
2016年三八节红领巾广播稿
2015/12/17 职场文书
Python中常见的导入方式总结
2021/05/06 Python
CSS基础详解
2021/10/16 HTML / CSS
Python中的嵌套循环详情
2022/03/23 Python
Python Numpy库的超详细教程
2022/04/06 Python
Android Gradle 插件自定义Plugin实现注意事项
2022/06/16 Java/Android
Hive常用日期格式转换语法
2022/06/25 数据库