实现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中的日期及时间
Nov 23 PHP
snoopy 强大的PHP采集类使用实例代码
Dec 09 PHP
php变量范围介绍
Oct 15 PHP
PHP获取当前页面URL函数实例
Oct 22 PHP
PHP实现下载断点续传的方法
Nov 12 PHP
PHP CURL 多线程操作代码实例
May 13 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
Jan 15 PHP
PHP使用file_get_content设置头信息的方法
Feb 14 PHP
Yii视图CGridView列表用法实例分析
Jul 12 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
Jul 13 PHP
PHP PDOStatement::getAttribute讲解
Feb 01 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
Nov 10 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
非洲第一个咖啡超凡杯大赛承办国—卢旺达的咖啡怎么样
2021/03/03 咖啡文化
PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
2010/07/04 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
2011/11/07 PHP
phpExcel导出大量数据出现内存溢出错误的解决方法
2013/02/28 PHP
php中socket通信机制实例详解
2015/01/03 PHP
微信推送功能实现方式图文详解
2019/07/12 PHP
PHP 使用位运算实现四则运算的代码
2021/03/09 PHP
jQuery ajax在GBK编码下表单提交终极解决方案(非二次编码方法)
2010/10/20 Javascript
Textarea与懒惰渲染实现代码
2012/01/04 Javascript
javascript中的Function.prototye.bind
2015/06/25 Javascript
JavaScript中的对象与JSON
2015/07/03 Javascript
JS延时器提示框的应用实例代码解析
2016/04/27 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
2016/07/05 Javascript
详解前端自动化工具gulp自动添加版本号
2016/12/20 Javascript
vue实现简单实时汇率计算功能
2017/01/15 Javascript
详解Angular-Cli中引用第三方库
2017/05/21 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
2017/07/17 Javascript
js学习总结之dom2级事件基础知识详解
2017/07/27 Javascript
jquery插件开发之选项卡制作详解
2017/08/30 jQuery
Vue组件通信的几种实现方法
2019/04/25 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
Python 不同对象比较大小示例探讨
2014/08/21 Python
Python实现遍历目录的方法【测试可用】
2017/03/22 Python
Python调用C# Com dll组件实战教程
2017/10/12 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
2020/07/20 Python
Django框架自定义模型管理器与元选项用法分析
2019/07/22 Python
Python 一键获取百度网盘提取码的方法
2019/08/01 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
2020/03/30 Python
python3.5的包存放的具体路径
2020/08/16 Python
用CSS3写的模仿iPhone中的返回按钮
2015/04/04 HTML / CSS
法律系毕业生求职信
2014/05/28 职场文书
企业环保标语
2014/06/10 职场文书
授权委托书怎么写
2014/09/25 职场文书
2015年电信员工工作总结
2015/05/26 职场文书
小学主题班会教案
2015/08/17 职场文书
乡镇团代会开幕词
2016/03/04 职场文书