实现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批量删除数据
Jan 18 PHP
Smarty Foreach 使用说明
Mar 23 PHP
php getimagesize 上传图片的长度和宽度检测代码
May 15 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
Dec 20 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
Aug 22 PHP
ThinkPHP模板之变量输出、自定义函数与判断语句用法
Nov 01 PHP
PHP获取文件夹大小函数用法实例
Jul 01 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
Mar 07 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
Aug 28 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
Sep 03 PHP
深入理解 PHP7 中全新的 zval 容器和引用计数机制
Oct 15 PHP
laravel框架语言包拓展实现方法分析
Nov 22 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
用php实现的下载css文件中的图片的代码
2010/02/08 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
2012/06/13 PHP
PHP5.3与5.5废弃与过期函数整理汇总
2014/07/10 PHP
dropdownlist之间的互相联动实现(显示与隐藏)
2009/11/24 Javascript
jquery 弹出层注册页面等(asp.net后台)
2010/06/17 Javascript
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
javascript创建和存储cookie示例
2014/01/07 Javascript
javascript 寻找错误方法整理
2014/06/15 Javascript
Javascript中typeof 用法小结
2015/05/12 Javascript
提升jQuery的性能需要做好七件事
2016/01/11 Javascript
详解vue-validator(vue验证器)
2017/01/16 Javascript
JavaScript数组和对象的复制
2017/03/21 Javascript
JavaScript之浏览器对象_动力节点Java学院整理
2017/07/03 Javascript
React利用插件和不用插件实现双向绑定的方法详解
2017/07/03 Javascript
vue页面切换到滚动页面显示顶部的实例
2018/03/13 Javascript
javascript实现考勤日历功能
2018/11/29 Javascript
python实现按行切分文本文件的方法
2016/04/18 Python
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
2017/12/20 Python
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
python 删除列表里所有空格项的方法总结
2018/04/18 Python
python实现人民币大写转换
2018/06/20 Python
Python文件如何引入?详解引入Python文件步骤
2018/12/10 Python
Python I/O与进程的详细讲解
2019/03/08 Python
Pytorch卷积层手动初始化权值的实例
2019/08/17 Python
用python生成与调用cntk模型代码演示方法
2019/08/26 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
2020/02/23 Python
jupyter note 实现将数据保存为word
2020/04/14 Python
python 调用Google翻译接口的方法
2020/12/09 Python
CSS3实现彩色进度条动画的示例
2020/10/29 HTML / CSS
澳洲健康食品网上商店:Aussie Health Products
2018/06/15 全球购物
以设计师精品品质提供快速时尚:Mostata
2019/05/10 全球购物
村委会换届选举方案
2014/05/03 职场文书
教师党员学习十八届四中全会思想汇报
2014/11/03 职场文书
学生会主席任命书
2015/09/21 职场文书
Windows安装Anaconda3的方法及使用过程详解
2021/06/11 Python