实现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 相关文章推荐
PHP5 面向对象(学习记录)
Dec 02 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
Jun 18 PHP
PHP连接MySQL查询结果中文显示乱码解决方法
Oct 25 PHP
codeigniter显示所有脚本执行时间的方法
Mar 21 PHP
Zend Framework框架路由机制代码分析
Mar 22 PHP
Smarty分页实现方法完整实例
May 11 PHP
php文件上传 你真的掌握了吗
Nov 28 PHP
PHP实现活动人选抽奖功能
Apr 19 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
Sep 16 PHP
CodeIgniter框架钩子机制实现方法【hooks类】
Aug 21 PHP
php面试中关于面向对象的相关问题
Feb 13 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
Apr 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
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
2012/01/12 PHP
PHP随机字符串生成代码(包括大小写字母)
2013/06/24 PHP
PHP时间戳 strtotime()使用方法和技巧
2013/10/29 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
2014/10/16 PHP
用JS实现的一个include函数
2007/07/21 Javascript
javascript基本语法分析说明
2008/06/15 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
2014/01/15 Javascript
jquery 扑捉回车键事件代码
2014/04/24 Javascript
用jquery.sortElements实现table排序
2014/05/04 Javascript
AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法
2014/06/06 Javascript
JavaScript实现多个重叠层点击切换效果的方法
2015/04/24 Javascript
元素绑定click点击事件方法
2015/06/08 Javascript
创建你的第一个AngularJS应用的方法
2015/06/16 Javascript
javascript获取当前的时间戳的方法汇总
2015/07/26 Javascript
浅析JavaScript中作用域和作用域链
2016/12/06 Javascript
vue2.x select2 指令封装详解
2017/10/12 Javascript
vue使用监听实现全选反选功能
2018/07/06 Javascript
webuploader实现上传图片到服务器功能
2018/08/16 Javascript
vue element upload组件 file-list的动态绑定实现
2019/10/11 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
2020/07/21 Javascript
使用Vue实现一个树组件的示例
2020/11/06 Javascript
python使用生成器实现可迭代对象
2018/03/20 Python
Tesserocr库的正确安装方式
2018/10/19 Python
python修改txt文件中的某一项方法
2018/12/29 Python
django创建最简单HTML页面跳转方法
2019/08/16 Python
python mongo 向数据中的数组类型新增数据操作
2020/12/05 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
2021/01/06 Python
html5模拟平抛运动(模拟小球平抛运动过程)
2013/07/25 HTML / CSS
意大利顶级奢侈品电商:LUISAVIAROMA(支持中文)
2020/05/26 全球购物
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
2014年会演讲稿范文
2014/01/06 职场文书
广场舞大赛策划方案
2014/05/31 职场文书
国庆促销活动总结
2014/08/29 职场文书
关于食品安全的演讲稿范文(三篇)
2019/10/21 职场文书
初中运动会闭幕词范本3篇
2019/12/09 职场文书
Python使用pandas导入xlsx格式的excel文件内容操作代码
2022/12/24 Python