实现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实现ODBC数据分页显示一例
Oct 09 PHP
php 变量未定义等错误的解决方法
Jan 12 PHP
获取PHP警告错误信息的解决方法
Jun 03 PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
Jun 20 PHP
PHP数据过滤的方法
Oct 30 PHP
ThinkPHP之M方法实例详解
Jun 20 PHP
php生成二维码时出现中文乱码的解决方法
Dec 18 PHP
PHP的Socket网络编程入门指引
Aug 11 PHP
php实现scws中文分词搜索的方法
Dec 25 PHP
PHP实现移除数组中为空或为某值元素的方法
Jan 07 PHP
浅析PHP类的反射来实现依赖注入过程
Feb 06 PHP
PHP大文件及断点续传下载实现代码
Aug 18 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
完美解决dedecms中的[html][/html]和[code][/code]问题
2007/03/20 PHP
fgetcvs在linux的问题
2012/01/15 PHP
PHP动态生成javascript文件的2个例子
2014/04/11 PHP
详解PHP swoole process的使用方法
2017/08/26 PHP
php7 list()、session及其他模块的修改实例分析
2020/05/25 PHP
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
js循环改变div颜色具体方法
2013/06/25 Javascript
javascript设置金额样式转换保留两位小数示例代码
2013/12/04 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
通过点击jqgrid表格弹出需要的表格数据
2015/12/02 Javascript
JavaScript 数组some()和filter()的用法及区别
2016/05/20 Javascript
javaScript知识点总结(必看篇)
2016/06/10 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
读Javascript高性能编程重点笔记
2016/12/21 Javascript
jQuery查找dom的几种方法效率详解
2017/05/17 jQuery
JS实现图片预览的两种方式
2017/06/27 Javascript
详解Vue2.0 事件派发与接收
2017/09/05 Javascript
JavaScript前端页面搜索功能案例【基于jQuery】
2019/07/10 jQuery
vue实现修改图片后实时更新
2019/11/14 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
2020/07/22 Javascript
vue + el-form 实现的多层循环表单验证
2020/11/25 Vue.js
python根据list重命名文件夹里的所有文件实例
2018/10/25 Python
Python使用正则表达式分割字符串的实现方法
2019/07/16 Python
python GUI图形化编程wxpython的使用
2019/07/19 Python
基于Python实现2种反转链表方法代码实例
2020/07/06 Python
python uuid生成唯一id或str的最简单案例
2021/01/13 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
StudentUniverse英国:学生航班、酒店和旅游
2019/08/25 全球购物
甲方资料员岗位职责
2013/12/13 职场文书
幼儿园端午节活动总结
2015/05/05 职场文书
大学生十八大感想
2015/08/11 职场文书
《小乌鸦爱妈妈》教学反思
2016/02/19 职场文书
《莫泊桑拜师》教学反思
2016/02/22 职场文书
简单总结SpringMVC拦截器的使用方法
2021/06/28 Java/Android